web-dev-qa-db-ja.com

Windows 10は非常に遅い多くの小さなファイルを削除しました。スピードアップするために何かできることはありますか?

私は、数万の20 kB JPEGファイルをバッチで処理し、合計でギガバイトになります。古いバッチを削除しようとすると、Windows 10の削除率が非常に低く、なんらかの理由でゼロになることもあります。

Enter image description here

これは私が使用しているハードウェアの現実の事実ですか、それともこの削除プロセスを高速化するために役立つヒントやトリックはありますか?

81
Kagaratsch

画像から、エクスプローラーを介してファイルを削除しているように見えます。これは、可能な最も遅い方法です。

改善のためにできること:

  • を使用してファイルを削除します Shift+Del そのため、削除されたファイルはごみ箱に移動されません(復元はできません)

  • del /?を使用してすべてのパラメーターを表示)と同様のコマンドを使用して、コマンドプロンプト内から削除を発行します。

    del /f /q *.*           (del in current folder, add `/s` to traverse sub-folders)
    del /f /q /s folder
    
89
harrymc

Explorerがなぜ遅いのかはわかりませんが、画像の各バッチを個別のファイルシステムボリュームに配置し、ボリュームをクイックフォーマットして削除することを検討してください。 Windows 10では、ファイルをディスクボリュームとしてマウントするためのネイティブサポート 。既存のファイルシステムを無視して新しいファイルシステムを書き込むだけなので、再フォーマットの速度はボリュームの内容に依存しません。

数万の20Kファイルは、ギガバイトではありません。すべてのライブバッチの合計サイズが物理RAMよりも小さい場合は、それらをRAMディスクを使用して(たとえば ImDisk を使用して)、引き続きフォーマットまたはボリュームをアンマウントして削除します。RAMディスクでの通常の再帰的な削除でも、スローダウンの原因によってははるかに高速になる可能性があります。再起動後もファイルを存続させる必要がある場合、これは明らかにオプションではありません。 。

削除するために再フォーマットすることの1つの欠点は、昇格した管理者になる必要があることです。もう1つは、誤って間違ったボリュームをフォーマットする可能性があることですが、実際にファイルを一括削除する方法には、間違ったボリュームを削除するリスクがあります。ボリュームにTempJpeg1のような説明的なラベルを付けた場合、それらをフォーマットすることは、コマンドラインから巨大なディレクトリを削除するのと同じくらい間違いを犯しがちです。

29
benrg

少なくともこの操作の間は、ウイルス対策/マルウェア対策のリアルタイム保護を無効にしてください。これにはWindows Defenderが含まれます。また、ランサムウェア対策(一部のバックアッププログラムで提供される)。

通常、リアルタイム保護にはファイル操作にフックがあり、多数のファイルが関係する操作を大幅に遅くすることは歴史的に有名です。

必要に応じて、削除の完了後に再度有効にすることができます。

24
Bob

これをコマンドとして実行すると、はるかに高速になります。 cmdを起動して実行

RD frames /S /Q

削除するファイル名ごとに画面をスパムすることなく、フォルダとその中のすべてのファイルとサブディレクトリを削除します。

RD = remove directory
/S = subdirectories included
/Q = quiet mode
9
Chris

バッチごとにパーティションを作成します。たとえば、所定のバッチでフォーマットした後、パーティションを10 GB程度にします。すべてのファイルはほんの数秒で消えてしまいました。

8
RobK

ローミングプロファイルを扱う場合、私はこれをかなり見ました。私の経験では、あらゆる種類の削除コマンドを送信することは、Robocopyを使用して空のフォルダを宛先に/ MIRするほど高速ではありません。これは、前述のどのオプションよりも速い生データや実際のメトリックスはありませんが、エクスプローラーシェルを使用するよりもかなり高速です。

新しい空のディレクトリを作成するか、現在の空のディレクトリを参照してから、次のコマンドを実行します。

robocopy x:\path\to\emptyfolder x:\path\to\delete /MIR /R:1 /W:1 /MT:128 /LOG:x:\path\to\logfile.log

/MIR :: MIRror a directory tree (equivalent to /E plus /PURGE). 
/R:1 :: number of Retries on failed copies: default 1 million.
/W:1 :: Wait time between retries: default is 30 seconds. 
/MT:128 :: Do multi-threaded copies with n threads (default 8).
               n must be at least 1 and not greater than 128.
               This option is incompatible with the /IPG and /EFSRAW options.
               Redirect output using /LOG option for better performance.

MTを使用する場合はログに記録する必要があります。画面に出力を表示する場合、測定可能な遅延が確実に発生します。

/ MT:128をオプションとして使用すると、一度に「削除」できるファイルの量が最大になります。

Robocopyを使用するのが初めての場合は、/ Lフラグを指定してドライランを実行する必要があることにも注意してください。

/L :: List only - don't copy, timestamp or delete any files.

次に、ログを確認して、アクションが希望どおりであることを確認します。

参照:

4
BenYork

提供された回答に加えて、削除操作に非常に時間がかかるのは、使用しているハードドライブのタイプが原因です。コメントの1つで、機械式ハードドライブを使用しており、SSDと比較して、それらが実行できるIOPSの量はかなり少ないと述べています。ウィキペディアには、機械式ドライブとソリッドステートドライブが実行できるおおよそのIOPSのリストがあります 彼らのサイトで

基本的に何が起こっているのかというと、OSがハードドライブにパーティションテーブル内のファイルのメタデータを消去するように指示しているため、ファイルは表示されません(まだそこにありますが、OSはファイルにアクセスする方法がわかりません)。これは基本的にはハードドライブへの非常に小さな書き込みです(0を書き込む)ので、Wikiはランダムで持続的な書き込みをリストしているため、Wikiに記載されているものよりも多くのことができる高速IOPです。

ここで覚えておくべきことは、Explorerがシステムの削除中にシステムで実行されているすべてのものを使ってナイスを再生しようとすることです。一方、delコマンドは、Niceになることをまったく試みず、できるだけ早く削除します。

SSDにアップグレードすると、IOPSは通常数千単位で測定され、機械式ドライブは数百単位で測定されるため、作業に役立ちます。フラッシュドライブを使用して、それが役立つかどうかを確認することもできます。ただし、結果は使用するドライブに大きく依存します。 RAMがある場合(およびイメージを失うリスクを気にしない場合)、RAMドライブを作成して使用します。私は個人的に ImDisk仮想ディスクを使用していますドライバー 、(所属なし)、大きな成功を収めており、無料です。

3
Blerg

多くのディレクトリエントリを削除すると、ネットサイズの単一のディレクトリを削除するよりも時間がかかります。多くのファイルを削除する場合、1つのファイルが削除されると、1つではなく多くのコマンドが必要になります。

これで、1つの大きなファイルが削除されると、ファイルマッパーはその大きなファイルのメモリの割り当てを解除するように指示されますが、ファイルの1と0はリセットされません。マッパーは、古い1と0の上に新しいものを自由に書き込むことができると伝えられています。基本的に、これは1つのコマンドであり、断片化されたファイルのすべてのメモリ割り当てをクリアするのに時間がかかります。 100万の小さなファイルを削除すると、100万のコマンドがマッパーに送信され、一度に1つずつ実行する必要があります。

したがって、解決策は、ソフトウェアを使用して、削除されたファイルのドライブと残された1と0をワイプすることです。スペースを一掃するには、1つのコマンドが必要です。ファイルを後で回復する必要がないと思われる場合にのみ、ソフトウェアを使用してください。

2
Broly LSSJ

他の素晴らしい答えに加えて、いくつかのトリックをあなたと共有したかった:

  • フォルダ内のすべてのファイルを削除:del *.*
  • ショートカット:上記と同じ、少ない入力:del.。これは文書化されていないことに注意してください。誤ってこのショートカットに遭遇しました。

今あなたの人生を楽にします:

  • 「よろしいですか」の質問に答える必要なく、複数のファイルを削除します:echo Y | del.
2
Michał Leon

各テスト実行で数千のファイルを作成および削除するいくつかの自動テストで、この正確な問題が発生しました。

これが良いパフォーマンスを得るために私がしたことです。

  1. 常にフォルダー全体を削除し、ごみ箱は避けてください。手動で行う場合は、コマンドラインを使用します。

  2. 一部のメモリをRAMドライブに変換できますか?追加のRAMを購入しましたテストします(より良いソリューションは、専用のバッテリバックアップRAMドライブですが、非常に高価です)。

  3. 第1世代および第2世代のSSDドライブへの書き込みは時間の経過とともに遅くなり、最終的には使用できなくなります。低レベルの「Trimコマンド」を実行すると、これが修正されますが、すべてのOS /ハードウェアの組み合わせがTrimをサポートしているわけではありません。私は何度も書き直されていたので、結局私は新しいSSDを購入する必要がありました。 (明らかに、私のテストは安いSSDドライブを殺すことでした。それを理解するのにしばらくかかりました。)

  4. HDDを使用している場合は、ドライブを定期的にデフラグしてください。

幸運を。私に有効な戦略を見つけるのに何ヶ月もかかり、SSDがいくつか追加され、その後に追加のRAMが必要だったので、あなたの痛みを感じました。

2
Woric

多くの小さなファイルを削除する場合、特にSSDではなく回転するディスクドライブを使用しているため、ディスクは多くのシークを費やす必要があります。大きなファイルを削除することは、マラソンを一度に実行するようなものですが、小さなファイルを削除することは、都市全体に広がる100メートルのチャンクでマラソンを実行するようなものです。あなたの主な活動は、ディスク内の場所を探すことです。これが通常のアクティビティである場合、これらのファイルを一時的に保持するためのパーティションを作成し、使い終わったらすぐにパーティションを消去することができます。

1
Jay Speidell