はじめに
robocopyコマンドで大量のファイルコピーを行う際に、コピー速度を上げる幾つかの方法について記載します
robocopyのバージョンによっては、該当オプションが無い場合もありますので、ご注意ください。
また、環境によっては一概に速度が向上するとは限りませんので、あくまで私の環境にて効果が有ったという点にご留意下さい。
(Windows Server 2012 R2で動作確認しています)
コピー環境の整備
ファイルコピーを行うにあたり、コピー元とコピー先のネットワーク的な距離が近い方が良いです。
具体的には、同じネットワークセグメントにする等です。
(出来ればL2スイッチで完結するように)
また、Gigabit Ethernet以上の利用が望ましいです。
コピー速度の向上に有効なオプション
①「再試行オプション」の指定
コピー失敗時デフォルトの再試行数は、待機時間30秒で100万回です。
これでは、いつまで経っても終わらないのでリトライ回数と待機時間を指定します。
/R:n :: 失敗したコピーに対する再試行数: 既定値は 1,000,000。
/W:n :: 再試行と再試行の間の待機時間: 既定値は、30 秒です。
オプション指定値例
/R:1 /W:1
②「マルチスレッドコピー」の指定
CPUコア数が多数ある場合は、この値を調整するとコピー速度が向上します。
マシン環境により最適値は異なるため、値を調整して最適な値を探します。
/MT[:n] :: n 個のスレッドのマルチスレッド コピーを実行します (既定値 8)。
n は 1 から 128 までの値である必要があります。
オプション指定値例
/MT:64
③「ログオプション」の指定
通常ログは、コマンドコンソール画面に出力されますが、ログファイルとして出力するとコピー速度が向上します。
/LOG:ファイル :: ログ ファイルに状態を出力します (既存のログを上書きします)。
オプション指定値例
/LOG:C:\work\test.log
④「進行状況」の非表示指定
ログが見づらくなるので、コピーの完了率の表示を出さないようにします。
/NP :: 進行状況なし - コピーの完了率を表示しません。
オプション指定値例
/NP
最後に
個人的に一番効果が有ったのは、ログをファイル書き出すということでした。
コマンドコンソール画面に表示させていた時と比べて、コピー速度の向上が実感できました。
Tera Termで、コピー時のログを画面に表示させないようにすると、コピー速度が向上しますが、これと同じ理屈なのでしょうか・・・
(画面表示に時間を取られている?)