馬とテニスのIT革命
馬とテニスとリラックマが好きな IT 系のエンジニアです。
シェル

シェルで一定期間を過ぎた古いファイルを削除する(7日前など)

Linux でバックアップファイルを作成する際、いつ作成したのかがわかりやすいようにファイル名に日付を付けることが多いです。

例えば以下のような感じですね。

TODAY=`date +%Y-%m-%d`

tar czvf hogehoge-${TODAY}.tar.gz hogehoge

今回は、このバックアップファイルが溜まってきた時の対処法について紹介したいと思います。

findと-ctimeを組み合わせる

今まで、1 週間前のデータは date 関数で 7 日前をピンポイントで指定していたのですが、find 関数の -ctime 使えばもっと簡単だったことが判明しました。

7日前の特定

「7日前の特定」は date 関数を使って 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 日前以前を特定する方法です。

find ${対象ディレクトリ} -type f -ctime +7 | xargs rm

上の例では、該当ファイルがなかった場合の対応はしていませんが、いろいろと応用もきくと思います。

atime(アクセス時間) 指定日数内にアクセスされたファイル
ctime(作成時間) 指定日数内に属性変更されたファイル
mtime(修正時間) 指定日数内に修正、更新されたファイル

Web API The Good Parts

オライリーの「Web API」に特化した本です。最近の多くの Web サービスは API が活用されていますが、その技術はこれまでの Web サイトとそれほど大きく変わりません。

今後、マイクロサービス化が進む中で知っておいて損はない内容が詰め込まれており、現場のエンジニアやこれから Web 系のエンジニアを目指す人にもオススメの一冊です。

created by Rinker
¥2,376
(2018/10/15 13:40:38時点 Amazon調べ-詳細)

あなたにオススメ