みなさん、お使いのデータベースのバックアップは大丈夫でしょうか? 今日、紹介するのは私が使っている MySQL のバックアップ用スクリプトです。元はどこかのサイトで見たものなのですが失念してしまいました。指定されたデータベースのダンプを取得した後、gzip でこれを圧縮し、指定された期間を過ぎたバックアップファイルは自動的に削除される仕組みになっています。これを cron を利用して一日に 1 回実行するようにしておくと便利です。
簡単に解説すると、スクリプトは 4 つの部分にわけられます。パラメータを設定する部分、MySQL のダンプを取得する部分、取得したダンプを gzip 圧縮する部分、最後に指定日以前の古いバックアップファイルを削除する部分です。KEEPDAY
に設定する値を変えることで、バックアップを残す日数を変更することができます。サーバのディスク容量と相談して適当な値に書き換えて使ってください。
#!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin KEEPDAY=90 DB_HOST=mysqlX.db.sakura.ne.jp DB_USER=username DB_PASS=password DB_NAME=database MKFILE=mysql.`date +'%y%m%d'` GZFILE=$MKFILE.gz RMFILE=mysql.`date -v -"$KEEPDAY"d +'%y%m%d'`.gz echo "Dumping to $MKFILE" mysqldump --host=$DB_HOST --user=$DB_USER --password=$DB_PASS --hex-blob --quote-names $DB_NAME > $MKFILE echo "Packing to $GZFILE" if [ -f $GZFILE ]; then rm -f $GZFILE fi gzip $MKFILE if [ -f $GZFILE -a -f $RMFILE ]; then rm -f $RMFILE echo "Removed $RMFILE" exit 0 fi
さくらインターネットのレンタルサーバ(FreeBSD)で稼動実績があります。