ディレクトリのバックアップスクリプトを作成したのでメモ。
環境
- CentOS 6.6
同じ処理をCentOS 7でも実行可能です。
ディレクトリのバックアップ
要件として以下を想定した
- 対象のディレクトリを圧縮してバックアップを取る
- 1週間分のバックアップを保存する(同時に古いものを削除する)
- 毎日実行する
# バックアップ先のディレクトリ
backupdir='/path/to/backupdir'
# 古いものを削除する
find $backupdir -type f -daystart -mtime +6 |xargs /bin/rm -f
# バックアップするディレクトリ
targetdir='/path/to/target_dir'
# ファイル名を定義
filename='backup.tar.gz'
cDateTime=`date '+%Y%m%d_%H%M%S'`
# backup実行
tar -zcf $backupdir/$filename$cDateTime $targetdir
これでバックアップファイル/path/to/backupdir/backup.tar.gz20200310_121112
が作成できる。
find
で過去のファイルを検索して|xargs /bin/rm -f
で削除している。
-daystart -mtime +6
のオプションが、過去から7日前までのファイルを検索する。
+nの場合は過去から(n+1)日前までの期間となるので注意。
0時が基準です。
保存期間の変更する場合は参考が詳しい。
tar -zcf
でtarで固めてgzipで圧縮している。
テストの際はオプションv
を付けると処理したファイルが確認できます。
crontabで定期実行する
先ほど作成したスクリプトbackup.sh
をcrontab
に登録します。
下は毎朝5時に実行する例。
# crontab -l
0 5 * * * sh /path/to/backup.sh
crontab -e
で編集してcrontab -l
で確認できる。
関連
- tarコマンドの使い方と圧縮のオプション
- Python2.7 smtplibで保守のメールを送る
- バックアップに失敗した場合にエラー内容をメールで送る設定です。
参考
- findコマンドのmtimeオプションまとめ
- バックアップファイルの保存期間を変更したい方はこちら