#!/bin/bash # # backup-mysql.sh 1.02 # # Dumps all databases to seperate files. All files are created in a folder designated after the current date. Folders exceeding the defined hold time are purged automatically. # # (c)2015-2016 Harald Schneider # # Setup.start # HOLD_DAYS=3 BACKUP_DIR="/backup/mysql" MYSQL_USR="root" MYSQL_PWD="+avatar111" MYSQL_CMD=/usr/bin/mysql MYSQL_DMP=/usr/bin/mysqldump # Use this for MAMP on MacOSX: # #MYSQL_CMD=/Applications/MAMP/Library/bin/mysql MYSQL_DMP=/Applications/MAMP/Library/bin/mysqldump # # Setup.end TIMESTAMP=$(date +"%F") mkdir -p "$BACKUP_DIR/$TIMESTAMP" databases=`$MYSQL_CMD --user=$MYSQL_USR -p$MYSQL_PWD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"` for db in $databases; do echo "Dumping $db ..." $MYSQL_DMP --force --opt --user=$MYSQL_USR -p$MYSQL_PWD --databases $db | gzip > "$BACKUP_DIR/$TIMESTAMP/$db.sql.gz" done echo echo "Cleaning up ..." find $BACKUP_DIR -maxdepth 1 -type d -ctime +$HOLD_DAYS -exec rm -rf {} + echo echo "-- DONE!"