Advertisement
Guest User

Untitled

a guest
Sep 16th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.51 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. BACKUPROOT="/usr/local/migration"
  4. if [ ! -d "$BACKUPROOT" ] ; then
  5.   mkdir -p $BACKUPROOT
  6.   echo "$BACKUPROOT created."
  7. else
  8.   echo "$BACKUPROOT exists. Please fix this."
  9.   exit 1
  10. fi
  11.  
  12. if which mysql &>/dev/null; then
  13.   [ -f "~/.my.cnf" ] && MYSQLCNF="~/.my.cnf"
  14.   [ -f "/etc/mysql/my.cnf" ] && MYSQLCNF="/etc/mysql/my.cnf"
  15.   [ -f "/etc/my.cnf" ] && MYSQLCNF="/etc/my.cnf"
  16.   if [ "$MYSQLCNF" != "" ] ; then
  17.       echo "my.cnf found at $MYSQLCNF...parsing."
  18.       MYSQLPSS=$(grep 'password =' $MYSQLCNF | grep -v -e"^#" | sed -r -e 's,password =(.+?),\1,' | head -n 1)
  19.       MYSQLUSR=$(grep 'user = ' $MYSQLCNF | grep -v -e"^#" | sed -r -e 's,user = (.+?),\1,' | head -n 1)
  20.       if [ "$MYSQLPSS" == "" ] ; then
  21.         MYSQLUSR="root"
  22.         echo -n "Couldn't find mysql password in there. Assuming root user. Please input mysql root password: "
  23.         read MYSQLPSS
  24.       else
  25.         echo "Found MySQL user and pass."
  26.       fi
  27.       mysql -u$MYSQLUSR -p$MYSQLPSS -e '' &>/dev/null || ( echo "Login incorrect." && exit 1 )
  28.       mysql -u$MYSQLUSR -p$MYSQLPSS -s -e 'show databases;' | grep -v -e "\(^Database$\|^information_schema$\|^mysql$\|^test$\)" > $BACKUPROOT/database.info
  29.       DBCOUNT=$(cat $BACKUPROOT/database.info | wc -l)
  30.       if [ "$DBCOUNT" -gt 1 ] ; then
  31.         DATABASES=$(tr '\n' ' ' < $BACKUPROOT/database.info)
  32.         mysqldump -u$MYSQLUSR -p$MYSQLPSS --databases $DATABASES > $BACKUPROOT/$(whoami)_backup.sql
  33.         if [ ! -f "$BACKUPROOT/$(whoami)_backup.sql" ] ; then
  34.              echo "MySQL Dump failed."
  35.              exit 1
  36.         fi
  37.         echo
  38.         echo "MySQL databases:"
  39.         cat $BACKUPROOT/database.info
  40.         echo "----------------"
  41.         echo
  42.       elif [ "$DBCOUNT" -eq 1 ] ; then
  43.         DATABASES=$(cat $BACKUPROOT/database.info)
  44.         mysqldump -u$MYSQLUSR -p$MYSQLPSS $DATABASES > $BACKUPROOT/$(whoami)_backup.sql
  45.         if [ ! -f "$BACKUPROOT/$(whoami)_backup.sql" ] ; then
  46.              echo "MySQL Dump failed."
  47.              exit 1
  48.         fi
  49.         echo
  50.         echo "MySQL Database: $DATABASES"
  51.         echo
  52.       elif [ "$DBCOUNT" -eq 0 ] ; then
  53.         echo "There are no databases..."
  54.       fi
  55.   else
  56.       echo "Can't find my.cnf, this is required for automation"
  57.       exit 1
  58.   fi
  59. else
  60.   echo "MySQL not installed.  Skipping..."
  61. fi
  62.  
  63. echo
  64. echo "Finding websites via the httpd.conf"
  65. if [ -f "/etc/httpd/conf/httpd.conf" ] ; then
  66.   grep -e "\(DocumentRoot\|ServerName\)" /etc/httpd/conf/httpd.conf | grep -v -e "^#" | sed -r -e 's,^\s*,,g;s,:.+?,,;s,",,g;' | sed -r -e '/ServerName/ { s,www\.,,;s,ServerName (.+?),\1,;N;s,DocumentRoot (.+?),\1,}; /\// {y,\n, ,;}' > $BACKUPROOT/domains.info
  67.   cat $BACKUPROOT/domains.info | awk {'print $2'} | sort | uniq > $BACKUPROOT/domain.paths.info
  68.   cd $BACKUPROOT
  69.   TMPVAR=$(cat $BACKUPROOT/domain.paths.info | wc -l)
  70.   II=1
  71.   echo
  72.   echo "Copying information over from current domains."
  73.   while [ "$II" -le "$TMPVAR" ] ; do
  74.       CURPATH=$(head $BACKUPROOT/domain.paths.info -n $II | tail -n 1)
  75.       CURDOM=$(grep $CURPATH $BACKUPROOT/domains.info | head -n 1 | awk {'print $1'})
  76.       echo "Creating directory for $CURDOM, then copying files. $CURPATH"
  77.       mkdir $BACKUPROOT/$CURDOM
  78.       shopt -s dotglob
  79.       cp $CURPATH $BACKUPROOT/$CURDOM -rf || ( echo "Copy failed." && exit 1 )
  80.       echo "Cleaning up $CURDOM folder"
  81.       if [ -d "$BACKUPROOT/$CURDOM/manager" ] ; then
  82.         rm $BACKUPROOT/$CURDOM/manager -rf
  83.       fi
  84.       if [ -d "$BACKUPROOT/$CURDOM/fm" ] ; then
  85.         rm $BACKUPROOT/$CURDOM/fm -rf
  86.       fi
  87.       if [ -d "$BACKUPROOT/$CURDOM/users" ] ; then
  88.         rm $BACKUPROOT/$CURDOM/users -rf
  89.       fi
  90.       if [ -h "$BACKUPROOT/$CURDOM/cgi-bin" ] ; then
  91.         if [ $(du $CURPATH/cgi-bin 2>/dev/null | wc -l) -gt 10 ] ; then
  92.              rm $BACKUPROOT/$CURDOM/cgi-bin -f
  93.              mkdir $BACKUPROOT/$CURDOM/cgi-bin
  94.              cp $CURPATH/cgi-bin $BACKUPROOT/$CURDOM/cgi-bin -rf
  95.              echo "cgi-bin had some things in it. I got em."
  96.         else
  97.              echo "nothing useful found in cgi-bin. leaving it here."
  98.              rm $BACKUPROOT/$CURDOM/cgi-bin -f
  99.         fi
  100.       fi
  101.       II=$(($II+1))
  102.       echo "Done copying for $CURDOM"
  103.       echo
  104.   done
  105.   if [ "$II" == 1 ] ; then
  106.       echo "No domains were copied?"
  107.       exit 1
  108.   fi
  109.   if [ -f "/etc/httpd/conf.d/ssl.conf" ] ; then
  110.       mkdir $BACKUPROOT/ssl
  111.       cp /etc/httpd/conf.d/ssl.conf $BACKUPROOT/ssl 2>/dev/null || ( echo "Copy failed." && exit $? )
  112.       cp /etc/httpd/conf/ssl.* $BACKUPROOT/ssl -r 2>/dev/null || ( echo "Copy failed." && exit $? )
  113.       echo "Found SSL files and moved them over"
  114.   fi
  115. else
  116.   echo "Can't find /etc/httpd/conf/httpd.conf"
  117. fi
  118.  
  119. echo "Grabbing user configurations"
  120. mkdir $BACKUPROOT/etc
  121. cp /etc/features /etc/mail/virtusertable /etc/mail/aliases /usr/local/migration/etc 2>/dev/null || ( echo "Copy failed." && exit $? )
  122.  
  123. echo "Grabbing mailboxes..."
  124. if [ -d "/var/spool/maildirs" ] ; then
  125.   cp /var/spool/maildirs $BACKUPROOT/ -rf
  126. elif [ -d "/var/spool/imap" ] ; then
  127.   cp /var/spool/imap $BACKUPROOT/ -rf
  128. elif [ -d "/var/spool/mail" ] ; then
  129.   cp /var/spool/mail $BACKUPROOT/ -rf
  130. else
  131.   echo "No mail found??"
  132. fi
  133.  
  134. echo "\"Tarring\" the files together.  File will be output in /$USER.tar.gz"
  135. if tar -czf /$USER.tar.gz -C /usr/local/migration . ; then
  136.   echo "Tar complete.  Removing $BACKUPROOT"
  137.   chmod 777 /usr/local/migration -R 2>/dev/null
  138.   rm /usr/local/migration -rf && echo "Removed files."
  139. else
  140.   echo "Tar failed."
  141. fi
  142.  
  143. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement