Linuxのcronで世代管理のバックアップを回す
Linuxのcronで世代管理のバックアップを回す処理を書いた。
http://nullpopopo.blogcube.info/2008/02/backup.htmlを参考にした。
バックアップ方針
Subversionの最新ソースをexportして、日付名を付けてtar.zipで圧縮する。このシェルスクリプトをcronで毎日実行する。7世代バックアップし古いファイルは削除する。
詳細仕様
ソース(backup.sh)
#!/bin/sh # this is "backup.sh" # backup svn export for 7ages. BACKUPDIR=/backup/ cd $BACKUPDIR rm -rf ./tmp/* svn export --force svn://localhost ./tmp ### /tmpディレクトリを日付で7世代バックアップする. ### もし、7日前のファイル名のものがあったら削除する. echo echo "backup SVN HEAD export" echo tar cvzf $BACKUPDIR/SVN_EXPORT_`date +%Y%m%d`.tar.gz ./tmp chown root. $BACKUPDIR/SVN_EXPORT_`date +%Y%m%d`.tar.gz chmod 600 $BACKUPDIR/SVN_EXPORT_`date +%Y%m%d`.tar.gz if test -f $BACKUPDIR/SVN_EXPORT_`date +%Y%m%d -d '7day ago'`.tar.gz then rm -f $BACKUPDIR/SVN_EXPORT_`date +%Y%m%d -d '7day ago'`.tar.gz fi echo echo "backup SVN completed" echo
設定とテスト
# mkdir /backup/
# mkdir /backup/tmp
# vi /backup/backup.sh --以下のソースを記述
# chmod 755 /backup/backup.sh
実験的に7日前のファイルを作成する。
# cp SVN_EXPORT_20080605.tar.gz SVN_EXPORT_20080604.tar.gz
# cp SVN_EXPORT_20080605.tar.gz SVN_EXPORT_20080603.tar.gz
# cp SVN_EXPORT_20080605.tar.gz SVN_EXPORT_20080602.tar.gz
# cp SVN_EXPORT_20080605.tar.gz SVN_EXPORT_20080601.tar.gz
# cp SVN_EXPORT_20080605.tar.gz SVN_EXPORT_20080531.tar.gz
# cp SVN_EXPORT_20080605.tar.gz SVN_EXPORT_20080530.tar.gz
# cp SVN_EXPORT_20080605.tar.gz SVN_EXPORT_20080529.tar.gz
7世代分実行済…という状態になった。
# ls -la /backup/
-rw------- 1 root root 1499240 6月 5 14:35 SVN_EXPORT_20080529.tar.gz
-rw------- 1 root root 1499240 6月 5 14:35 SVN_EXPORT_20080530.tar.gz
-rw------- 1 root root 1499240 6月 5 14:35 SVN_EXPORT_20080531.tar.gz
-rw------- 1 root root 1499240 6月 5 14:34 SVN_EXPORT_20080601.tar.gz
-rw------- 1 root root 1499240 6月 5 14:34 SVN_EXPORT_20080602.tar.gz
-rw------- 1 root root 1499240 6月 5 14:34 SVN_EXPORT_20080603.tar.gz
-rw------- 1 root root 1499240 6月 5 14:34 SVN_EXPORT_20080604.tar.gz
# /backup/backup.sh --バックアップ実行
SVN_EXPORT_20080605が作成されSVN_EXPORT_20080529が削除された。
# ls -la /backup/
-rw------- 1 root root 1499240 6月 5 14:35 SVN_EXPORT_20080530.tar.gz
-rw------- 1 root root 1499240 6月 5 14:35 SVN_EXPORT_20080531.tar.gz
-rw------- 1 root root 1499240 6月 5 14:34 SVN_EXPORT_20080601.tar.gz
-rw------- 1 root root 1499240 6月 5 14:34 SVN_EXPORT_20080602.tar.gz
-rw------- 1 root root 1499240 6月 5 14:34 SVN_EXPORT_20080603.tar.gz
-rw------- 1 root root 1499240 6月 5 14:34 SVN_EXPORT_20080604.tar.gz
-rw------- 1 root root 1499240 6月 5 14:36 SVN_EXPORT_20080605.tar.gz]
復旧では以下のコマンドでtarを解凍する。
# tar xvf SVN_EXPORT_20080605.tar.gz