Last active
June 6, 2016 09:03
-
-
Save asessa/49e00368748a57c44b5474bf46aa6e56 to your computer and use it in GitHub Desktop.
Backup each MySQL Databases in separate tar.xz files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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