#!/usr/bin/env bash MYSQLDIR="/var/lib/backups/mysql" MYSQLOPTIONFILE="/root/.my.cnf" DAYS="30" set -e umask 0077 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/root/bin:/sbin:/usr/sbin if ! pgrep mysqld > /dev/null ; then echo "no mysqld running!" exit 0 fi mkdir -p "$MYSQLDIR" for db in $(mysql "--defaults-file=$MYSQLOPTIONFILE" -u backupuser -s -N -e 'SHOW DATABASES;'); do if [[ "$db" != "information_schema" ]] ; then #echo -e "==> Backing up database $db" BACKEDUP="$BACKEDUP $db" file=$MYSQLDIR/mysqldump-$db-$(date +%F_%H-%M).sql mysqldump "--defaults-file=$MYSQLOPTIONFILE" -u backupuser --opt --single-transaction --databases "$db" | bzip2 > "$file.bz2" fi done count=0 #echo -e "\n==> Searching $MYSQLDIR for backups older than $DAYS days..." for file in $(find "$MYSQLDIR" -type f -mtime "+$DAYS"); do #echo "rm $file" DELETED="$DELETED $(basename "$file")" rm "$file" count=$(($count+1)) done if [[ -n "$BACKEDUP" ]] ; then echo "Backed up databases: $BACKEDUP" else echo "no database backed up" fi if [[ -n "$DELETED" ]] ; then echo "<== End: $count backups removed:" #${DELETED}" else echo "No old backups removed!" fi