進捗状況を表示しながら、ディレクトリから数十億のファイルを削除する

進捗状況を表示しながら、ディレクトリから数十億のファイルを削除する

私は何十億ものファイルがすべてJPEGファイル形式で含まれている30TBのディレクトリを持っています。次のように各フォルダのファイルを削除します。

sudo rm -rf bolands-mills-mhcptz

コマンドが実行され、動作しているかどうかに関係なく、何も表示されません。

ファイルを削除するのか、コマンドの現在の状態がどのようなものかを知りたいです。

ベストアンサー1

削除したファイルごとに1行ずつrm -v印刷できますrm。これにより、rmファイルの削除が実際に機能していることを確認できます。ただし、何十億ものファイルがある場合は、rmそのファイルがまだ機能していることがわかります。どのくらいのファイルが削除されたか、どれだけ残っているのかわかりません。

このツールはpv進行状況を予測するのに役立ちます。

http://www.ivarch.com/programs/pv.shtml

rmサンプル出力を使用して呼び出す方法は次のとおりです。pv

$ rm -rv dirname | pv -l -s 1000 > logfile
562  0:00:07 [79,8 /s] [====================>                 ] 56% ETA 0:00:05

pvこの人工的な例では、ファイルがあると言いました1000。出力にはpv562が削除され、経過時間は7秒、予想完了時間は5秒です。

いくつかの説明:

  • pv -lpvバイトではなく改行文字で計算
  • pv -s numberpv総額がいくらであるかを教えてください。
  • logfile最終リダイレクトはきちんとした出力のためです。それ以外の場合、ステータス行はpvの出力と混同されますrm -v。ボーナス:削除内容のログファイルが提供されます。ただし、ファイルが非常に大きくなる可能性があることに注意してください。/dev/nullログが必要ない場合は、リダイレクトすることもできます。

ファイル数を取得するには、次のコマンドを使用できます。

$ find dirname | wc -l

何十億ものファイルがある場合でも、時間がかかることがあります。pvここでどれだけ計算されたかを確認することもできます。

$ find dirname | pv -l | wc -l
278k 0:00:04 [56,8k/s] [     <=>                                              ]
278044

ここでは278k個のファイルを計算するのに4秒かかったという。 ()末尾の正確な数はの278044出力ですwc -l

カウントを待たない場合は、ファイル数を推測するか、pv直接使用できます。

$ rm -rv dirname | pv -l > logfile

これにより、達成したい操作を推定することはできませんが、少なくとも削除されたファイルの数を確認できます。/dev/nullログファイルが不要な場合にリダイレクトしてください。


残響:

  • 本当に必要ですかsudo
  • 通常rm -r、再帰的に削除すれば十分です。不要rm -f

おすすめ記事