Linux でバックアップファイルを作成する際、いつ作成したのかがわかりやすいようにファイル名に日付を付けることが多いです。
例えば以下のような感じですね。
1 2 | TODAY=`date +%Y-%m-%d` tar czvf hogehoge-${TODAY}.tar.gz hogehoge |
今回は、このバックアップファイルが溜まってきた時の対処法について紹介したいと思います。
findと-ctimeを組み合わせる
今まで、1 週間前のデータは date 関数で 7 日前をピンポイントで指定していたのですが、find 関数の -ctime 使えばもっと簡単だったことが判明しました。
7日前の特定
「7日前の特定」は date 関数を使って 7 日前を特定する方法です。
1 2 3 4 5 6 7 | [Linux] OLD_DATE=`date -d '7 days ago' +%Y-%m-%d` [FreeBSD] OLD_DATE=`date -v-7d +%Y-%m-%d` if [ -f hogehoge-${OLD_DATE}.tar.gz ] ; then rm hogehoge-${OLD_DATE}.tar.gz fi |
find 関数で洗い出し
次に find 関数を使って 7 日前以前を特定する方法です。
1 | find ${対象ディレクトリ} -type f -ctime +7 | xargs rm |
上の例では、該当ファイルがなかった場合の対応はしていませんが、いろいろと応用もきくと思います。
atime(アクセス時間) 指定日数内にアクセスされたファイル
ctime(作成時間) 指定日数内に属性変更されたファイル
mtime(修正時間) 指定日数内に修正、更新されたファイル