Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- BACKUP=/var/www/html/mysql_backup/backups
- cd $BACKUP
- sudo mkdir `date '+%d-%m-%Y'`
- NOW=$(date +"%d-%m-%Y")
- MUSER="user"
- MPASS="pass"
- MHOST="host"
- MYSQL="$(which mysql)"
- MYSQLDUMP="$(which mysqldump)"
- GZIP="$(which gzip)"
- MAIL="info@example.com"
- STATUSFILE="/tmp/statusfile.$NOW"
- # It succeeds but stderr will get:
- # Warning: Using a password on the command line interface can be insecure.
- # You can fix this with the below hack:
- credentialsFile=/mysql-credentials.cnf
- echo "[client]" > $credentialsFile
- echo "user=$MUSER" >> $credentialsFile
- echo "password=$MPASS" >> $credentialsFile
- echo "host=$MHOST" >> $credentialsFile
- echo "Backup report from $NOW" > $STATUSFILE
- DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
- for db in $DBS
- do
- FILE=$BACKUP/$NOW/mysql-$db.$NOW-$(date +"%T").sql.gz
- $MYSQLDUMP --defaults-extra-file=$credentialsFile --lock-all-tables $db | $GZIP -9 > $FILE
- if [ "$?" -eq "0" ]; then
- echo "$db backup is OK" >> $STATUSFILE
- else
- echo "##### WARNING: ##### $db backup failed" >> $STATUSFILE
- fi
- done
- # delete backups older than 1 week
- find /path/to/base/dir/* -type d -ctime +10 -exec rm -rf {} \;
- mail -s "Backup report for $NOW" -- $MAIL < $STATUSFILE
- rm $STATUSFILE
Add Comment
Please, Sign In to add comment