ファイルとサブディレクトリが多いディレクトリでは、検索コマンドが非常に遅くなります。

ファイルとサブディレクトリが多いディレクトリでは、検索コマンドが非常に遅くなります。

約一週間、私は次のコマンドが完了するのを待っていました。

find -type d -empty -print -delete >> empty-folder-deletion-log.txt

しかし、まだ進行中のことで、まだやるべきことがたくさん残っているようです。これで、ハードドライブ全体を何度もイメージしたように見えるので、このコマンドが最適ではないか、スピードを上げる方法があるようです。

公平に言えば、たくさんのファイルやフォルダがあります。あるハードドライブには約1億個のinodeがあり、もう一方のハードドライブには約1億7500万個のinodeがあります。

作業速度を上げるにはどうすればよいですか?この問題はランダムIOに関連すると考えられています。メタデータがハードドライブに保存される順序でルックアップを減らす同等のコマンドはありますか?コマンドを中断せずにスピードを上げるには、どのようなオプションが必要ですか?それとも別のプログラムを使用して再試行する方法はありますか? noatimeで再インストールすると役に立ちますか?それでは、コマンドを中断せずにこれを実行できますか?

私はこの記事を書いている時点で、Debian Bullseyeである最新バージョンのDebian stableを使用しています。このコマンドは2つのハードドライブ(8TBドライブと12TBドライブ)で実行され、両方とも5400RPMで回転します。

答え1

私は自分で使ったことはありませんが、-empty価格は高価です。また、-depth深度優先検索を使用しない場合は、空のディレクトリツリーを繰り返し削除せずに、最低レベルのディレクトリのみを見つけることができます。

strace -ttt -T -p <find_pid>何がかかるのかを確認するには(および/またはltrace)を使用することをお勧めします。

関連情報