Kod:
#!/bin/bash
DB_BACKUP="/backups/mysql_backup/`date +%Y-%m-%d`"
DB_USER="root"
DB_PASSWD="sifre"
HN=`hostname | awk -F. '{print $1}'`
# Backup klasörü
mkdir -p $DB_BACKUP
# 10 günden eski backupları silelim
find /backups/mysql_backup/ -maxdepth 1 -type d -mtime +10 -exec rm -rf {} ;
# Seçenek 1: root ile bağlanıp her db'nin yedeğini alalım
for db in $(mysql --user=$DB_USER --password=$DB_PASSWD -e 'show databases' -s --skip-column-names|grep -vi information_schema);
do mysqldump --user=$DB_USER --password=$DB_PASSWD --opt $db | gzip > "$DB_BACKUP/mysqldump-$HN-$db-$(date +%Y-%m-%d).gz";
done
# Option 2: root değilsek bunu kullanabiliriz
# for db in $(mysql -e 'show databases' -s --skip-column-names|grep -vi information_schema);
# do mysqldump --opt $db | gzip > "$DB_BACKUP/mysqldump-$HN-$db-$(date +%Y-%m-%d).gz";
# done
# sadece root a okuma yetkisi verelim
chmod -R 600 $DB_BACKUP
# cron'a atayalım
/usr/local/bin/mysql_backup.sh gibi bir isim verelim, chmod 700 ile kendimize okuma izni verelim:
# cron kaydı
30 3 * * * /usr/local/bin/mysql_backup.sh