Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Built by jeremysiedzik@gmail.com - any questions, feel free to contact me
- # ---------------------------------------------------------------------------------
- # Credit and Forum Backup File Location and Storage Variables
- # Note - after Database Transfer fixforumupdate.sh or fixcreditupdate.sh is run
- # in the directory defined by FRWEBSTATICFILES or CRWEBSTATICFILES on the remote server
- # ---------------------------------------------------------------------------------
- CRWEBTIME=`date +%y-%b-%d` # this command will add the date in the backup file name
- CRWEBFILENAME=creditnet.backup.$CRWEBTIME.tar.gz # define the backup file name format
- CRWEBSRCDIR=/www/creditnet/* # source of the backup
- CRWEBTEMPDESDIR=/www/backups # destination of the backup file
- CRWEBDESTSERVER=root@development # destination user@servername
- CRWEBDESTDIR=/www/dev.creditnet # destination directory
- CRWEBSTATICFILES=/www/static-files/dev.creditnet # static file location
- FRWEBTIME=`date +%y-%b-%d` # this command will add the date in the backup file name
- FRWEBFILENAME=forums.backup.$FRWEBTIME.tar.gz # define the backup file name format
- FRWEBSRCDIR=/www/consumers.creditnet.com/* # source of the backup
- FRWEBTEMPDESDIR=/www/backups # destination of the backup file
- FRWEBDESTSERVER=root@development # destination user@servername
- FRWEBDESTDIR=/www/devforums.creditnet.com # destination directory
- FRWEBSTATICFILES=/www/static-files/devforums.creditnet.com # static file location
- # ---------------------------------------------------------------------------------
- # Credit And Forum Database Locations and Credentials
- # Note: CRSQLFILE and FRSQLFILE Path must exist. For example, use --> mkdir -p /www/backups <--
- # ---------------------------------------------------------------------------------
- CRSQLFILE=creditnet.sql.`date +"%Y%m%d"`.sql # filename of the sql dump
- CRSQLPATH=/www/backups # local temp storage path
- CRSQLBACKUPPATH=/www/dev-backups # destination directory
- CRSQLDBSERVER=127.0.0.1 # mysql server IP
- CRSQLDATABASE=creditnet # mysql database name
- CRSQLUSER=root # mysql username
- CRSQLPASS=iatem13 # mysql password
- CRSQLDESTSERVER=root@development # destination user@servername
- FRSQLFILE=forum.sql.`date +"%Y%m%d"`.sql # filename of the sql dump
- FRSQLPATH=/www/backups # local temp storage path
- FRSQLBACKUPPATH=/www/dev-backups # destination directory
- FRSQLDBSERVER=127.0.0.1 # mysql server IP
- FRSQLDATABASE=consumer_forum # mysql database name
- FRSQLUSER=root # mysql username
- FRSQLPASS=iatem13 # mysql password
- FRSQLDESTSERVER=root@development # destination user@servername
- # --------------------------------------------------------------------------------
- # Menu Options and General Layout
- # --------------------------------------------------------------------------------
- show_menu(){
- NORMAL=`echo "\033[m"`
- MENU=`echo "\033[36m"` #Blue
- NUMBER=`echo "\033[33m"` #yellow
- FGRED=`echo "\033[41m"`
- RED_TEXT=`echo "\033[31m"`
- ENTER_LINE=`echo "\033[33m"`
- echo ""
- echo -e "${MENU}******* File Transfers **********************${NORMAL}"
- echo ""
- echo -e "${MENU}**${NUMBER} 1)${MENU} Copy Prod to Dev - Main Website ${NORMAL}"
- echo -e "${MENU}**${NUMBER} 2)${MENU} Copy Prod to Dev - Forums ${NORMAL}"
- echo ""
- echo -e "${MENU}******* Database Transfers ******************${NORMAL}"
- echo ""
- echo -e "${MENU}**${NUMBER} 3)${MENU} Copy Prod to Dev - Main DB ${NORMAL}"
- echo -e "${MENU}**${NUMBER} 4)${MENU} Copy Prod to Dev - Forums DB ${NORMAL}"
- echo ""
- echo -e "${MENU}******* Backup Directories ******************${NORMAL}"
- echo ""
- echo -e "${MENU}**${NUMBER} 5)${MENU} Backup Development - Main Website ${NORMAL}"
- echo -e "${MENU}**${NUMBER} 6)${MENU} Backup Development - Forums Website ${NORMAL}"
- echo ""
- echo -e "${MENU}*********************************************${NORMAL}"
- echo ""
- echo -e "${ENTER_LINE}Please enter a menu option and enter or ${RED_TEXT}enter to exit. ${NORMAL}"
- read -p "--> " opt
- }
- function option_picked() {
- COLOR='\033[01;31m' # bold red
- RESET='\033[00;00m' # normal white
- MESSAGE=${@:-"${RESET}Error: No message passed"}
- echo -e "${COLOR}${MESSAGE}${RESET}"
- }
- clear
- show_menu
- while [ opt != '' ]
- do
- if [[ $opt = "" ]]; then
- exit;
- else
- case $opt in
- 1) clear;
- option_picked "Option 1 Picked - Copy Prod to Dev - Main Website";
- sudo /usr/bin/rsync -avh $CRWEBSRCDIR $CRWEBDESTSERVER:$CRWEBDESTDIR;
- sudo ssh $CRWEBDESTSERVER cp -rf $CRWEBSTATICFILES/* $CRWEBDESTDIR;
- show_menu;
- ;;
- 2) clear;
- option_picked "Option 2 Picked - Copy Prod to Dev - Forums";
- sudo /usr/bin/rsync -avh $FRWEBSRCDIR $FRWEBDESTSERVER:$FRWEBDESTDIR;
- sudo ssh $FRWEBDESTSERVER cp -rf $FRWEBSTATICFILES/* $FRWEBDESTDIR;
- show_menu;
- ;;
- 3) clear;
- option_picked "Option 3 Picked - Copy Prod to Dev - Main Website DB";
- sudo unalias rm 2> /dev/null;
- sudo rm $CRSQLPATH/$CRSQLFILE 2> /dev/null;
- sudo rm $CRSQLPATH/$CRSQLFILE.gz 2> /dev/null;
- sudo ssh $CRSQLDESTSERVER rm $CRSQLBACKUPPATH/* 2> /dev/null;
- sudo echo "About to run Mysqldump";
- sudo sleep 3;
- sudo /usr/bin/mysqldump --opt --user=$CRSQLUSER --password=$CRSQLPASS $CRSQLDATABASE > $CRSQLPATH/$CRSQLFILE;
- sudo gzip $CRSQLPATH/$CRSQLFILE;
- sudo echo "$CRSQLPATH/$CRSQLFILE.gz was created:";
- sudo chmod 700 $CRSQLPATH/$CRSQLFILE.gz;
- sudo ls -l $CRSQLPATH/$CRSQLFILE.gz;
- sudo echo "About to move sql file to remote Dev Server";
- sudo sleep 3;
- sudo /usr/bin/rsync -avh $CRSQLPATH/$CRSQLFILE.gz $CRSQLDESTSERVER:$CRSQLBACKUPPATH;
- sudo echo "About to drop remote Dev DB";
- sudo sleep 3;
- sudo ssh $CRSQLDESTSERVER /usr/bin/mysqladmin -f -u $CRSQLUSER -p$CRSQLPASS drop $CRSQLDATABASE;
- sudo echo "About to Gunzip remote SQL file";
- sudo sleep 3;
- sudo ssh $CRSQLDESTSERVER /bin/gunzip $CRSQLBACKUPPATH/$CRSQLFILE.gz;
- sudo echo "About to create remote Dev DB --> $CRSQLDATABASE <--";
- sudo sleep 3;
- sudo ssh $CRSQLDESTSERVER /usr/bin/mysqladmin -f -u $CRSQLUSER -p$CRSQLPASS create $CRSQLDATABASE;
- sudo echo "About to import SQL records into --> $CRSQLDATABASE <--";
- sudo sleep 3;
- sudo echo "mysql -f -u $CRSQLUSER -p$CRSQLPASS $CRSQLDATABASE < $CRSQLBACKUPPATH/$CRSQLFILE" >> $CRSQLPATH/creditimportsql.sh;
- sudo chmod 700 $CRSQLPATH/creditimportsql.sh;
- sudo /usr/bin/rsync -avh $CRSQLPATH/creditimportsql.sh $CRSQLDESTSERVER:$CRSQLBACKUPPATH;
- sudo ssh $CRSQLDESTSERVER $CRSQLBACKUPPATH/creditimportsql.sh;
- sudo ssh $CRSQLDESTSERVER $CRWEBSTATICFILES/fixcreditupdate.sh;
- sudo ssh $CRSQLDESTSERVER rm $CRSQLBACKUPPATH/credit* 2> /dev/null;
- show_menu;
- ;;
- 4) clear;
- option_picked "Option 4 Picked - Copy Prod to Dev - Forums DB";
- sudo unalias rm 2> /dev/null;
- sudo rm $FRSQLPATH/$FRSQLFILE 2> /dev/null;
- sudo rm $FRSQLPATH/$FRSQLFILE.gz 2> /dev/null;
- sudo ssh $FRSQLDESTSERVER rm $FRSQLBACKUPPATH/* 2> /dev/null;
- sudo echo "About to run Mysqldump";
- sudo sleep 3;
- sudo /usr/bin/mysqldump --opt --user=$FRSQLUSER --password=$FRSQLPASS $FRSQLDATABASE > $FRSQLPATH/$FRSQLFILE;
- sudo gzip $FRSQLPATH/$FRSQLFILE;
- sudo echo "$FRSQLPATH/$FRSQLFILE.gz was created:";
- sudo chmod 700 $FRSQLPATH/$FRSQLFILE.gz;
- sudo ls -l $FRSQLPATH/$FRSQLFILE.gz;
- sudo echo "About to move sql file to remote Dev Server";
- sudo sleep 3;
- sudo /usr/bin/rsync -avh $FRSQLPATH/$FRSQLFILE.gz $FRSQLDESTSERVER:$FRSQLBACKUPPATH;
- sudo echo "About to drop remote Dev DB";
- sudo sleep 3;
- sudo ssh $FRSQLDESTSERVER /usr/bin/mysqladmin -f -u $FRSQLUSER -p$FRSQLPASS drop $FRSQLDATABASE;
- sudo echo "About to Gunzip remote SQL file";
- sudo sleep 3;
- sudo ssh $FRSQLDESTSERVER /bin/gunzip $FRSQLBACKUPPATH/$FRSQLFILE.gz;
- sudo echo "About to create remote Dev DB --> $FRSQLDATABASE <--";
- sudo sleep 3;
- sudo ssh $FRSQLDESTSERVER /usr/bin/mysqladmin -f -u $FRSQLUSER -p$FRSQLPASS create $FRSQLDATABASE;
- sudo echo "About to import SQL records into --> $FRSQLDATABASE <--";
- sudo sleep 3;
- sudo echo "mysql -f -u $FRSQLUSER -p$FRSQLPASS $FRSQLDATABASE < $FRSQLBACKUPPATH/$FRSQLFILE" >> $FRSQLPATH/forumimportsql.sh;
- sudo chmod 700 $FRSQLPATH/forumimportsql.sh;
- sudo /usr/bin/rsync -avh $FRSQLPATH/forumimportsql.sh $FRSQLDESTSERVER:$FRSQLBACKUPPATH;
- sudo ssh $FRSQLDESTSERVER $FRSQLBACKUPPATH/forumimportsql.sh;
- sudo ssh $FRSQLDESTSERVER $FRWEBSTATICFILES/fixforumupdate.sh;
- sudo ssh $FRSQLDESTSERVER rm $FRSQLBACKUPPATH/forum* 2> /dev/null;
- show_menu;
- ;;
- 5) clear;
- option_picked "Option 5 Picked - Backup Production DB - Main Website";
- sudo tar -cpzf $CRWEBTEMPDESDIR/$CRWEBFILENAME $CRWEBSRCDIR;
- sudo chmod 700 /www/backups/creditnet*;
- sudo /usr/bin/rsync -avh /www/backups/creditnet* root@development:/www/dev-backups/;
- sudo rm -rf /www/backups/creditnet*;
- show_menu;
- ;;
- 6) clear;
- option_picked "Option 6 Picked - Backup Production DB - Forums";
- sudo tar -cpzf $FRWEBTEMPDESDIR/$FRWEBFILENAME $FRWEBSRCDIR;
- sudo chmod 700 /www/backups/forums*;
- sudo /usr/bin/rsync -avh /www/backups/forums* root@development:/www/dev-backups/;
- sudo rm -rf /www/backups/forums*;
- show_menu;
- ;;
- x)exit;
- ;;
- \n)exit;
- ;;
- *)clear;
- option_picked "Pick an option from the menu";
- show_menu;
- ;;
- esac
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement