ディレクトリのバックアップスクリプトを作成したのでメモ。
環境
- 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オプションまとめ
- バックアップファイルの保存期間を変更したい方はこちら