大きなディレクトリより古いファイルを削除する方法

大きなディレクトリより古いファイルを削除する方法

1,300万以上のファイルがあるディレクトリがあり、mtimeに基づいてそれらのいくつかを削除したいと思います。これを効率的に行う方法は? ext4にあります。

ベストアンサー1

おそらく、以下より効率的なものを得ることはできません。

find /dir -type f -mtime +6 -delete

7日(たとえば、6日ではなく7日)を過ぎたファイルを削除します。

いずれにせよ、各lstat()ファイルに対してシステムコールを実行して最後の変更時刻を確認する必要があります。ファイルの削除(unlink()ディレクトリからファイルを削除)は、ディレクトリの内容の編集、ディレクトリの変更時間の更新、inodeのファイルリンク数の更新、ブロック/範囲の割り当て情報の更新が必要なため、高価です。

(GNU拡張)を使用することは、別のユーティリティを呼び出すことなく直接実行できるため、-delete非常に効率的です。という意味ですが、パフォーマンスには大きな影響を与えないようです。unlink()findrm-depth

おすすめ記事