私たちのクラスタには、30日以内に変更またはアクセスされなかったすべてのファイルが削除されるというポリシーがあります。プロジェクトが実行中で完了するまで、すべてのファイルを保持したいと思います。次のようにしてシステムをだますことができますか?
find ./ -type f -exec touch {} +
これを試してみましたが、タイムスタンプが変更されたようです。しかし、これを行うと、システムはファイルが実際に変更されたと思いますか?
答え1
もちろんこれはうまくいくはずです。
しかし、「stat」コマンドを確認してみると確実です。
sh-4.3$ stat test.csv
File: 'test.csv'
Size: 871 Blocks: 8 IO Block: 4096 regular file
Device: 20fd4bh/2161995d Inode: 8389896 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ cg) Gid: ( 1000/ cg)
Access: 2016-01-06 05:29:32.220197637 +0000
Modify: 2016-01-06 05:29:32.220197637 +0000
Change: 2016-01-06 05:29:32.220197637 +0000
Birth: -
sh-4.3$
答え2
ポリシーが実際に「30日間変更またはアクセスされていないファイル」の場合は、touch -a
一般的なtouch
。これの利点は、修正時間を破らないので、ビルドスクリプトが壊れずに修正時間を使用してそのファイルバージョンの寿命を表すことができることです。
ファイルのアクセス時間を表示するために使用できますls -lu
。