借りているレンタルサーバーのMySQLのデーターのバックアップをとるために、バックアップスクリプトを書いてみた。指定した日にちだけバックアップを保持して古いバックアップは自動で消けすという仕様にしてみた。
#!/bin/sh
#
# MySQLのバックアップスクリプト
## バックアップを取得するディレクトリ
BackupDir="/home/admin/backup"# ユーザーアカウントの設定
User="user"
Pass="pass"# 圧縮に使用するプログラム
Compress_command="gzip"# バックアップファイルの拡張子
Suffix="gz"# バックアップファイルの名前
File_name="$BackupDir/db-backup.`date '+%Y-%m-%d'`.dump.$Suffix"# バックアップを保持する日数
Days="7"echo -e "backup started => `date`\n"
echo -e "Back up file => $File_name\n"# バックアップの取得
if [ -z $Pass ] ; then
mysqldump -u $User -x --alldatabases --events | $Compress_command > $File_name
else
mysqldump -u $User -p$Pass -x --alldatabases --events | $Compress_command > $File_name
fiecho -e "Backup file size => `ls -lah $File_name | awk '{ print $5 }'`\n"
echo -e "Backup ended => `date`\n"# 古いバックアップの消去
echo -e "Delete backup files started => `date`\n"
find $BackupDir -mtime +$Days -name "db-backup*" print -exec rm -f {} \;echo -e "Delete old backups files( $Days days passed )\n"
echo -e "Delete backup files ended => `date`\n"
このスクリプトをこんな感じでcronで定期実行すればバックアップが完了したらメールで通知を出すようにできる。
0 5 * * * /home/admin/scripts/mysql-backup.sh 2>&1 | mail -s “MySQL Backup” example@example.com 2>&1