1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/bin/bash
- # Shell script to backup MySql database
- # To backup Nysql databases file to /backup dir and later pick up by your
- # script. You can skip few databases from backup too.
- # For more info please see (Installation info):
- # http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/01/mysql-backup-script.html
- # Last updated: Aug - 2005
- # --------------------------------------------------------------------
- # This is a free shell script under GNU GPL version 2.0 or above
- # Copyright (C) 2004, 2005 nixCraft project
- # Feedback/comment/suggestions : http://cyberciti.biz/fb/
- # -------------------------------------------------------------------------
- # This script is part of nixCraft shell script collection (NSSC)
- # Visit http://bash.cyberciti.biz/ for more information.
- # -------------------------------------------------------------------------
- MyUSER="root" # USERNAME
- MyPASS="password" # PASSWORD
- MyHOST="localhost" # Hostname
- OURREMOTEUSER="backuper"
- OURREMOTEHOST="cast.usic.org.ua"
- OURREMOTEDIR="~/backups/mysql"
- #OURREMOTEDIR="172.16.200.2:/home/user/backups"
- # Linux bin paths, change this if it can't be autodetected via which command
- MYSQL="$(which mysql)"
- MYSQLDUMP="$(which mysqldump)"
- CHOWN="$(which chown)"
- CHMOD="$(which chmod)"
- XZ="$(which xz)"
- # Backup Dest directory, change this if you have someother location
- DEST="/tmp/"
- # Main directory where backup will be stored
- MBD="$DEST/mysql"
- MES="$MBD/backup.log"
- # Get hostname
- HOST="$(hostname)"
- # Get date in dd-mm-yyyy format
- NOW="$(date +"%d-%m-%Y")"
- # File to store current backup file
- FILE=""
- # Store list of databases
- DBS=""
- # DO NOT BACKUP these databases
- IGGY="test information_schema UsicManagementSystem advus banor beaverdb elfy elfydb fg mantis oldsite courses tek wiki usictube"
- [ ! -d $MBD ] && mkdir -p $MBD || :
- # Only root can access it!
- #$CHOWN 0.0 -R $DEST
- #$CHMOD 0600 $DEST
- # Get all database list first
- DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
- ssh $OURREMOTEUSER@$OURREMOTEHOST "mkdir $OURREMOTEDIR/$NOW" > /dev/null 2>&1
- for db in $DBS
- do
- skipdb=-1
- if [ "$IGGY" != "" ];
- then
- for i in $IGGY
- do
- [ "$db" == "$i" ] && skipdb=1 || :
- done
- fi
-
- if [ "$skipdb" == "-1" ] ; then
- FILE="$MBD/$db.$HOST.$NOW.lzma"
- # do all inone job in pipe,
- # connect to mysql using mysqldump for select mysql database
- # and pipe it out to lzma file in backup dir :)
- $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $XZ --format=lzma -9 > $FILE
- echo "$NOW. Backup successfully done." >> $MES
- echo -e "Backup file: $FILE\n" >> $MES
- scp $FILE $OURREMOTEUSER@$OURREMOTEHOST:$OURREMOTEDIR/$NOW/ >/dev/null 2>&1
- if [ $? == 0 ]; then
- echo "Backup successfully copied to $OURREMOTEDIR" >> $MES
- # cleanup files
- rm -f $FILE
- else
- echo "Failed to copy backup to $OURREMOTEDIR" >> $MES
- fi
- fi
- done
|