サイトデータのバックアップの設定

公開日 2015-01-17

最終更新日 2015-01-17

次のシェルスクリプトを実行すると、サイトデータのバックアップを行うことができます。

backup_dir バックアップを保存するディレクトリ
dbname Railsの実行モード
keep_days 保存するバックアップファイルの履歴数

zomeki_backup.sh
#!/bin/sh
cd /var/share

backup_dir='/home/zomeki/backup'
dbname='zomeki_production'
keep_days='7'

today=`date +%Y%m%d`

mkdir -p  ${backup_dir}

tar zcf ${backup_dir}/zomeki_${today}.tar.gz --exclude 'zomeki/log/*.gz' zomeki
mysqldump --user=zomeki --password=zomekipass --opt --single-transaction ${dbname} \
  | gzip > ${backup_dir}/${dbname}_${today}.sql.gz

find ${backup_dir} -maxdepth 1 -name *.gz -mtime +${keep_days} -type f -exec rm -f {} \;

このスクリプトを次のように定期実行します。

# crontab -l
0 6 * * * /root/zomeki_backup.sh

その結果、次のようにバックアップファイルが作成されます。

$ ll /home/zomeki/backup
合計 151943336
-rw-r--r-- 1 root root 19403307720  1月 10 06:30 2015 zomeki_20150110.tar.gz
-rw-r--r-- 1 root root 19424142538  1月 11 06:32 2015 zomeki_20150111.tar.gz
-rw-r--r-- 1 root root 19421318994  1月 12 06:28 2015 zomeki_20150112.tar.gz
-rw-r--r-- 1 root root 19455110567  1月 13 06:33 2015 zomeki_20150113.tar.gz
-rw-r--r-- 1 root root 19426323047  1月 14 06:29 2015 zomeki_20150114.tar.gz
-rw-r--r-- 1 root root 19422556989  1月 15 07:31 2015 zomeki_20150115.tar.gz
-rw-r--r-- 1 root root 19424083289  1月 16 07:28 2015 zomeki_20150116.tar.gz
-rw-r--r-- 1 root root 19139361679  1月 17 07:48 2015 zomeki_20150117.tar.gz
-rw-r--r-- 1 root root    57627285  1月 10 06:30 2015 zomeki_production_20150110.sql.gz
-rw-r--r-- 1 root root    58030454  1月 11 06:32 2015 zomeki_production_20150111.sql.gz
-rw-r--r-- 1 root root    58469093  1月 12 06:28 2015 zomeki_production_20150112.sql.gz
-rw-r--r-- 1 root root    58914359  1月 13 06:33 2015 zomeki_production_20150113.sql.gz
-rw-r--r-- 1 root root    59434205  1月 14 06:30 2015 zomeki_production_20150114.sql.gz
-rw-r--r-- 1 root root    59962084  1月 15 07:31 2015 zomeki_production_20150115.sql.gz
-rw-r--r-- 1 root root    60417459  1月 16 07:29 2015 zomeki_production_20150116.sql.gz
-rw-r--r-- 1 root root    60846505  1月 17 07:48 2015 zomeki_production_20150117.sql.gz

24時間経過しないと1日と判断しないため、keep_days='7'だと、保存ファイルの数は8になります。