Skip to content

Instantly share code, notes, and snippets.

@asessa
Last active June 6, 2016 09:03
Show Gist options
  • Save asessa/49e00368748a57c44b5474bf46aa6e56 to your computer and use it in GitHub Desktop.
Save asessa/49e00368748a57c44b5474bf46aa6e56 to your computer and use it in GitHub Desktop.
Backup each MySQL Databases in separate tar.xz files
#!/usr/local/bin/zsh
# Backup each MySQL Databases in separate tar.xz files
# MAX_DAYS - choose how many days to backup
# depends on ~/.my.cnf
BACKUP_DIR="/var/backups/mysql"
EXCLUDE_DBS=(information_schema mysql performance_schema sys)
CURRENT_DATE=`date +\%Y-\%m-\%d`
MAX_DAYS=2
# Check if backup directory exists
if [ ! -d "$BACKUP_DIR" ]; then
echo "Creating backup directory: $BACKUP_DIR"
mkdir -p "$BACKUP_DIR"
fi
# Delete old backup files
find $BACKUP_DIR -maxdepth 1 -mtime $MAX_DAYS -exec rm '{}' ';'
mysql -e 'show databases;' | awk '{if (NR!=1) {print $1}}' | while read dbname
do
if [[ ! ${EXCLUDE_DBS[@]} =~ $dbname ]]; then
echo "Dumping $dbname."
mysqldump $dbname >$BACKUP_DIR/$dbname.sql
tar -cJf $BACKUP_DIR/$dbname-$CURRENT_DATE.tar.xz -C $BACKUP_DIR $dbname.sql
rm $BACKUP_DIR/$dbname.sql
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment