Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- BACKUPROOT="/usr/local/migration"
- if [ ! -d "$BACKUPROOT" ] ; then
- mkdir -p $BACKUPROOT
- echo "$BACKUPROOT created."
- else
- echo "$BACKUPROOT exists. Please fix this."
- exit 1
- fi
- if which mysql &>/dev/null; then
- [ -f "~/.my.cnf" ] && MYSQLCNF="~/.my.cnf"
- [ -f "/etc/mysql/my.cnf" ] && MYSQLCNF="/etc/mysql/my.cnf"
- [ -f "/etc/my.cnf" ] && MYSQLCNF="/etc/my.cnf"
- if [ "$MYSQLCNF" != "" ] ; then
- echo "my.cnf found at $MYSQLCNF...parsing."
- MYSQLPSS=$(grep 'password =' $MYSQLCNF | grep -v -e"^#" | sed -r -e 's,password =(.+?),\1,' | head -n 1)
- MYSQLUSR=$(grep 'user = ' $MYSQLCNF | grep -v -e"^#" | sed -r -e 's,user = (.+?),\1,' | head -n 1)
- if [ "$MYSQLPSS" == "" ] ; then
- MYSQLUSR="root"
- echo -n "Couldn't find mysql password in there. Assuming root user. Please input mysql root password: "
- read MYSQLPSS
- else
- echo "Found MySQL user and pass."
- fi
- mysql -u$MYSQLUSR -p$MYSQLPSS -e '' &>/dev/null || ( echo "Login incorrect." && exit 1 )
- mysql -u$MYSQLUSR -p$MYSQLPSS -s -e 'show databases;' | grep -v -e "\(^Database$\|^information_schema$\|^mysql$\|^test$\)" > $BACKUPROOT/database.info
- DBCOUNT=$(cat $BACKUPROOT/database.info | wc -l)
- if [ "$DBCOUNT" -gt 1 ] ; then
- DATABASES=$(tr '\n' ' ' < $BACKUPROOT/database.info)
- mysqldump -u$MYSQLUSR -p$MYSQLPSS --databases $DATABASES > $BACKUPROOT/$(whoami)_backup.sql
- if [ ! -f "$BACKUPROOT/$(whoami)_backup.sql" ] ; then
- echo "MySQL Dump failed."
- exit 1
- fi
- echo
- echo "MySQL databases:"
- cat $BACKUPROOT/database.info
- echo "----------------"
- echo
- elif [ "$DBCOUNT" -eq 1 ] ; then
- DATABASES=$(cat $BACKUPROOT/database.info)
- mysqldump -u$MYSQLUSR -p$MYSQLPSS $DATABASES > $BACKUPROOT/$(whoami)_backup.sql
- if [ ! -f "$BACKUPROOT/$(whoami)_backup.sql" ] ; then
- echo "MySQL Dump failed."
- exit 1
- fi
- echo
- echo "MySQL Database: $DATABASES"
- echo
- elif [ "$DBCOUNT" -eq 0 ] ; then
- echo "There are no databases..."
- fi
- else
- echo "Can't find my.cnf, this is required for automation"
- exit 1
- fi
- else
- echo "MySQL not installed. Skipping..."
- fi
- echo
- echo "Finding websites via the httpd.conf"
- if [ -f "/etc/httpd/conf/httpd.conf" ] ; then
- 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
- cat $BACKUPROOT/domains.info | awk {'print $2'} | sort | uniq > $BACKUPROOT/domain.paths.info
- cd $BACKUPROOT
- TMPVAR=$(cat $BACKUPROOT/domain.paths.info | wc -l)
- II=1
- echo
- echo "Copying information over from current domains."
- while [ "$II" -le "$TMPVAR" ] ; do
- CURPATH=$(head $BACKUPROOT/domain.paths.info -n $II | tail -n 1)
- CURDOM=$(grep $CURPATH $BACKUPROOT/domains.info | head -n 1 | awk {'print $1'})
- echo "Creating directory for $CURDOM, then copying files. $CURPATH"
- mkdir $BACKUPROOT/$CURDOM
- shopt -s dotglob
- cp $CURPATH $BACKUPROOT/$CURDOM -rf || ( echo "Copy failed." && exit 1 )
- echo "Cleaning up $CURDOM folder"
- if [ -d "$BACKUPROOT/$CURDOM/manager" ] ; then
- rm $BACKUPROOT/$CURDOM/manager -rf
- fi
- if [ -d "$BACKUPROOT/$CURDOM/fm" ] ; then
- rm $BACKUPROOT/$CURDOM/fm -rf
- fi
- if [ -d "$BACKUPROOT/$CURDOM/users" ] ; then
- rm $BACKUPROOT/$CURDOM/users -rf
- fi
- if [ -h "$BACKUPROOT/$CURDOM/cgi-bin" ] ; then
- if [ $(du $CURPATH/cgi-bin 2>/dev/null | wc -l) -gt 10 ] ; then
- rm $BACKUPROOT/$CURDOM/cgi-bin -f
- mkdir $BACKUPROOT/$CURDOM/cgi-bin
- cp $CURPATH/cgi-bin $BACKUPROOT/$CURDOM/cgi-bin -rf
- echo "cgi-bin had some things in it. I got em."
- else
- echo "nothing useful found in cgi-bin. leaving it here."
- rm $BACKUPROOT/$CURDOM/cgi-bin -f
- fi
- fi
- II=$(($II+1))
- echo "Done copying for $CURDOM"
- echo
- done
- if [ "$II" == 1 ] ; then
- echo "No domains were copied?"
- exit 1
- fi
- if [ -f "/etc/httpd/conf.d/ssl.conf" ] ; then
- mkdir $BACKUPROOT/ssl
- cp /etc/httpd/conf.d/ssl.conf $BACKUPROOT/ssl 2>/dev/null || ( echo "Copy failed." && exit $? )
- cp /etc/httpd/conf/ssl.* $BACKUPROOT/ssl -r 2>/dev/null || ( echo "Copy failed." && exit $? )
- echo "Found SSL files and moved them over"
- fi
- else
- echo "Can't find /etc/httpd/conf/httpd.conf"
- fi
- echo "Grabbing user configurations"
- mkdir $BACKUPROOT/etc
- cp /etc/features /etc/mail/virtusertable /etc/mail/aliases /usr/local/migration/etc 2>/dev/null || ( echo "Copy failed." && exit $? )
- echo "Grabbing mailboxes..."
- if [ -d "/var/spool/maildirs" ] ; then
- cp /var/spool/maildirs $BACKUPROOT/ -rf
- elif [ -d "/var/spool/imap" ] ; then
- cp /var/spool/imap $BACKUPROOT/ -rf
- elif [ -d "/var/spool/mail" ] ; then
- cp /var/spool/mail $BACKUPROOT/ -rf
- else
- echo "No mail found??"
- fi
- echo "\"Tarring\" the files together. File will be output in /$USER.tar.gz"
- if tar -czf /$USER.tar.gz -C /usr/local/migration . ; then
- echo "Tar complete. Removing $BACKUPROOT"
- chmod 777 /usr/local/migration -R 2>/dev/null
- rm /usr/local/migration -rf && echo "Removed files."
- else
- echo "Tar failed."
- fi
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement