削除するすべてのファイルのリストを最初に作成しなくても、何百万ものファイルを効率的に削除します。

削除するすべてのファイルのリストを最初に作成しなくても、何百万ものファイルを効率的に削除します。

私はマウントされたNASドライブから何百万ものファイルを削除する方法を見つけようとしました。私がアクセスするオペレーティングシステムはRHEL 7.6です。

このディレクトリには、毎日数万または数十万の追加ファイルが活発に記録されています。

たとえば、アンインストール技術を実行しようとすると、次のようになります。

rsync -av --delete empty_dir/ millions_of_files_dir/

まず、CPU/MEM を多用し、「デルタファイルリストを送信中です」というメッセージが表示されます。これは永遠に続き、CPU / MEM使用量は徐々に最小限に抑えられます。

私の理論は、ファイルのリストが終わらないので、これが起こるということです。多数のファイルが追加されます。

SO:削除する前にファイルの完全なリストを必要としませんが、ファイルが見つかった場合に「ストリームを削除」する削除技術はありますか?

答え1

findオプションと一緒にコマンドを使用すると、-deleteリスト全体を作成せずにファイルを検出すると削除されます。

find . -type f -delete # deletes all files in the current dir and all subdirs

ほとんどのLinuxファイルシステムは、単一のディレクトリにあまりにも多くのファイルがあると正しく機能しないことに注意することが重要です。 「完全な」リストが作成されていなくてもディレクトリの内容を一覧表示する必要があるため、ディレクトリに何百万ものファイルが含まれているとパフォーマンスが悪くなります。

関連情報