#!/bin/bash if [ "$1" == "" ] || [ "$1" == "-h" ] || [ "$1" == "--help" ] || [ "$1" == "-?" ]; then echo -e " "; echo -e "getBackup: Prepare backup data for migration"; echo -e "usage: getBackup -s - Start the migration"; echo -e "usage: getbackup -s -t - Test a migration, dont do it, just show what would happen"; echo -e "usage: getBackup [-h|--help|-?|(no options)] - Show this help screen"; echo -e " "; echo -e "Upon starting, getBackup will ask you for some information, all of which"; echo -e " can be gathered between the target server and the original server"; echo -e " "; echo -e "notes: "; echo -e " * If the migration has mail, you will be stopped, provided a folder "; echo -e " list and asked for a name, the input here is asking for which of "; echo -e " the two contain the folder "; echo -e " "; exit; elif [ "$1" == "-s" ]; then set -vx; echo -e "Starting Migration PART 1"; if [ "$2" == "-t" ]; then echo -e "***** TESTING MODE ******"; fi if [ -d $HOME/migrations ]; then echo -e "Migrations dir exists"; else if [ "$2" == "-t" ]; then echo -e "mkdir $HOME/migrations"; echo -e "cd $HOME/migrations"; else mkdir $HOME/migrations; cd $HOME/migrations; fi fi while [ "$backupServer" == "" ]; do echo "Backup server: "; read backupServer; if [ "$backupServer" != "" ]; then break; fi done echo "Path on Backup server to backups: [/usr/local/pem/place4backup/] "; read backupPath; if [ "$backupPath" == "" ]; then backupPath="/usr/local/pem/place4backup/"; fi echo "User for Backup server: [root]"; read backupCredentials; if [ "$backupCredentials" == "" ]; then backupCredentials="root"; fi while [ "$targetServer" == "" ]; do echo "Target server: "; read targetServer; if [ "$targetServer" != "" ]; then break; fi done echo "User for target server: [root]"; read targetCredentials; if [ "$targetCredentials" == "" ]; then targetCredentials="root"; fi if [ "$targetCredentials" == "root" ]; then targetHome="/root"; else targetHome="/home/$targetCredentials"; fi while [ "$domainName" == "" ]; do echo "Domain Name being Migrated: "; read domainName; if [ "$domainName" != "" ]; then if [ "$2" == "-t" ]; then echo -e "mkdir $HOME/migrations/$domainName"; echo -e "cd $HOME/migrations/$domainName"; else mkdir $HOME/migrations/$domainName; cd $HOME/migrations/$domainName; fi middlemanDir="$HOME/migrations/$domainName"; break; fi done echo -e "Domain Name: $domainName"; while [ "$pemID" == "" ]; do echo "PEM Webspace ID for Domain: "; read pemID; if [ "$pemID" != "" ]; then break; fi done echo "Does this Migration have web? [Y/n]: "; read hasWeb; if [ "$hasWeb" == "" ] || [ "$hasWeb" == "Y" ] || [ "$hasWeb" == "y" ]; then while [ "$webID" == "" ]; do echo "ID of WEB tarball: "; read webID; if [ "$webID" != "" ]; then break; fi done webID="backup_data-$webID.tar"; echo -e "Using web tarball: $webID"; if [ "$2" == "-t" ]; then echo -e "scp $backupCredentials@$backupServer:$backupPath$webID $middlemanDir/"; echo -e "tar -zxf $middlemanDir/$webID"; echo -e "cd $middlemanDir/usr/local/pem/vhosts/$pemID/webspace"; echo -e "tar -czf $middlemanDir/$domainName.web.tgz certs/ error_docs/ httpdocs/ httpsdocs/"; echo -e "sudo rm -rf $middlemanDir/usr"; echo -e "ssh $targetCredentials@$targetServer 'mkdir -p migrations; mkdir -p migrations/$domainName;'"; echo -e "scp $middlemanDir/$domainName.web.tgz $targetCredentials@$targetServer:migrations/$domainName/"; else scp $backupCredentials@$backupServer:$backupPath$webID $middlemanDir/; tar -zxf $middlemanDir/$webID; cd $middlemanDir/usr/local/pem/vhosts/$pemID/webspace; tar -czf $middlemanDir/$domainName.web.tgz certs/ error_docs/ httpdocs/ httpsdocs/; sudo rm -rf $middlemanDir/usr; ssh $targetCredentials@$targetServer 'mkdir -p $targetHome/migrations; mkdir -p $targetHome/migrations/$domainName;'; scp $middlemanDir/$domainName.web.tgz $targetCredentials@$targetServer:$targetHome/migrations/$domainName/; fi fi echo "Does this Migration have mail? [Y/n]: "; read hasMail; if [ "$hasMail" == "" ] || [ "$hasMail" == "Y" ] || [ "$hasMail" == "y" ]; then while [ "$mailID" == "" ]; do echo "ID of MAIL tarball: "; read mailID; if [ "$mailID" != "" ]; then break; fi done mailID="backup_data-$mailID.tar"; if [ "$2" == "-t" ]; then echo -e "scp $backupCredentials@$backupServer:$backupPath$mailID $middlemanDir/"; echo -e "tar -zxf $middlemanDir/$mailID"; else scp $backupCredentials@$backupServer:$backupPath$mailID $middlemanDir/; tar -zxf $middlemanDir/$mailID; fi while [ "$mailDir" == "" ]; do cd $middlemanDir/usr/local/qmail/shared/mailnames; find ./ -name "*" -type d -depth 3 | xargs -Ifile echo "[1]possibile finds: file"; echo "Above are possible options for directories that mail is in, please choose the one containing the directory $domainName . Please only put in the name of the dir up to the domain name, without a trailing slash, everything else will be handled by this script"; echo "Directory for Mail: "; read mailDir; if [ "$mailDir" != "" ]; then break; fi done mailDir="$middlemanDir/usr/local/qmail/shared/mailnames/$mailDir/$domainName"; echo "MailDir is now: $mailDir"; while [ "$mailUser" != "end" ]; do cd $mailDir/; find ./ -name "*" -type d -depth 2 | xargs -Ifile echo "[1]possibile mail Users: file"; echo "Above are possible names of the mail users for $domainName. Please type in the name of the user to pack. Type 'end' to stop adding"; echo "Mail dir to pack: "; read mailUser; if [ "$mailUser" == "end" ]; then break; elif [ "$mailUser" != "" ]; then if [ "$2" == "-t" ]; then echo "cd $mailDir/$mailUser/Maildir && tar -czf $middlemanDir/$domainName.mail.$mailUser.tgz --exclude '..' cur/ new/ tmp/ .*/"; echo -e "ssh $targetCredentials@$targetServer 'mkdir -p $targetHome/migrations; mkdir -p $targetHome/migrations/$domainName;'"; echo -e "scp $middlemanDir/$domainName.mail.$mailUser.tgz $targetCredentials@$targetServer:$targetHome/migrations/$domainName/"; else cd $mailDir/$mailUser/Maildir && tar -czf $middlemanDir/$domainName.mail.$mailUser.tgz --exclude ".." cur/ new/ tmp/ .*/; ssh $targetCredentials@$targetServer 'mkdir -p $targetHome/migrations; mkdir -p $targetHome/migrations/$domainName;'; scp $middlemanDir/$domainName.mail.$mailUser.tgz $targetCredentials@$targetServer:$targetHome/migrations/$domainName/; fi fi done fi echo "Does this Migration have database? [y/N]: "; read hasDB; if [ "$hasDB" == "Y" ] || [ "$hasDB" == "y" ]; then echo -e "THIS IS BROKEN!"; echo -e "Manually untar the database backup, tar each one into their own, scp them to $targetServer and deal with these manually"; # exit; # while [ "$dataID" == "" ]; do # echo "ID of DB tarball: "; read dataID; # if [ "$dataID" != "" ]; then # break; # fi # done # dataID="backup_data-$dataID.tar"; # if [ "$2" == "-t" ]; then # echo -e "scp $backupCredentials@$backupServer:$backupPath$dataID $middlemanDir/"; # echo -e "tar -zxf $middlemanDir/$dataID"; # echo -e "cd $middlemanDir/usr/local/"; # # else # scp $backupCredentials@$backupServer:$backupPath$mailID $middlemanDir/ # tar -zxf $middlemanDir/$mailID # cd $middlemanDir/usr/local/qmail/shared/mailnames/ # fi fi echo "Copy second half of migration script to $targetServer? [n/Y]: "; read copyScript; if [ "$copyScript" == "" ] || [ "$copyScript" == "y" ] || [ "$copyScript" == "Y" ]; then if [ "$2" == "-t" ]; then echo -e "ssh $targetCredentials@$targetServer 'mkdir -p bin'"; echo -e "scp $HOME/bin/doRestore $targetCredentials@$targetServer:bin/"; else ssh $targetCredentials@$targetServer 'mkdir -p bin' scp $HOME/bin/doRestore $targetCredentials@$targetServer:bin/ fi fi echo -e "The first part of migration is complete, please ssh to $targetServer and execute 'doRestore -s' to begin the final migration process"; exit; fi