Robocopyには/J
大きなファイルをコピーする場合に推奨されるコマンドラインオプション(バッファなしのI/Oを使用してコピーします)。
(もしあれば)どんな欠点がありますか?これがデフォルトで有効になっていない理由は何ですか? (それが私にそこにマイナス面があるかもしれないと思った理由です。)
すばらしい質問です。
バッファなしI/Oは、ソースの場所から宛先の場所への単純なファイルコピーです。バッファI/Oは、仮想メモリの領域である filesystem cache にファイルをコピーすることにより、同じファイルの将来の読み取り(および書き込み)を最適化するために単純なコピーを拡張します。バッファリングされたI/Oは、メモリにファイルをコピーする必要があるため、最初にファイルにアクセスするときにパフォーマンスが低下します。ただし、メモリアクセスはディスクアクセスよりも高速であるため、その後のファイルアクセスも高速になります。オペレーティングシステムは、ディスクへのファイルの書き込みの同期を処理し、読み取りはメモリから直接プルできます。
使用上の注意では、バッファI/Oに対して大きなファイルについて言及しています。
したがって、トレードオフがありますが、どちらが適切かは、特定のケースによって異なります。大量のファイルを圧縮して、Zipをバックアップターゲットに送信する場合は、バッファなしの方法が適しています。変更されたばかりの一連のファイルをコピーしていますか?バッファリングされた方が速いはずです。
最後に、ファイルサイズは、バッファリングと非バッファリングを決定する唯一の要素ではないことに注意してください。他のキャッシュと同様に、ファイルシステムキャッシュは高速ですが、背後にあるソースよりも小さくなります。新しいアイテムのためのスペースを作るためにアイテムをいつ立ち退かせるかを管理する キャッシュ置換戦略 が必要です。頻繁にアクセスされるアイテムが削除されると、メリットが失われます。たとえば、ユーザーのホームディレクトリを別の場所に日中同期している場合(つまり、ユーザーがファイルをアクティブに使用している場合)、バッファI/Oは、キャッシュに常駐しているファイルから恩恵を受けますが、古いファイルで一時的にキャッシュを汚染する可能性があります;一方、バッファリングされていない場合は、すでにキャッシュされているファイルの利点が失われます。そのような場合、明確な勝者はありません。
注:これはxcopy /J
にも適用されます
詳細については、Microsoftの パフォーマンスチームのブログに質問する を参照してください。
私は以下を試しました:
高速デバイス(ギガビットイーサネット経由のNAS)から別の高速デバイス(USB3-Disk)にコピーする場合
このオプションを使用することをお勧めします。
WANを介してコピーする場合、平均コピー時間が大幅に増加するため、大きなファイルに対して/ Jオプションを有効にしないことをお勧めします。私がコピーしたファイルは500MBから23GBの範囲でした。
50Mbpsの回線では、平均43.5Mbps(他のトラフィックとオーバーヘッド)でしたが、/ Jなしで32Mbpsを下回ることはありませんでした。/Jを使用すると、平均は約25Mbpsでした... perfmonを見ると、下部に大きな山と谷が見られました。
これが誰かを助けることを願っています。