#!/bin/sh # # Brute force approach to mysql backups # BACKUP_HOME=/home/mysqldumps BACKUP_DATE=`date +%Y%m%d-%H%M` MYSQLACCESS="--user=root --password=XXXXXX" MYSQL="/usr/bin/mysql $MYSQLACCESS" MYSQLDUMP="/usr/bin/mysqldump $MYSQLACCESS" # Make sure the service exists [ -e /etc/init.d/mysqld ] || exit 0 # Backup only if it's active /etc/init.d/mysqld status >/dev/null || exit 0 if [ ! -d "$BACKUP_HOME" ]; then echo "$0: $BACKUP_HOME does not exist for backups, create before proceeding" exit 1 fi # remove backups older than 7 days find $BACKUP_HOME -type f -mtime +7 | xargs rm -f for db in `echo 'show databases' | $MYSQL --skip-column-names`; do BACKUP_FILE=$BACKUP_HOME/"$db"-$BACKUP_DATE.sql $MYSQLDUMP --lock-tables --database "$db" --result-file=$BACKUP_FILE ln -nf $BACKUP_FILE $BACKUP_HOME/current-"$db".sql done