2012-01-22

大量のファイルを Windows ファイル共有先からコピーするとき

エクスプローラーからファイルをコピーしようとすると、まずはじめにファイルをスキャンして容量をチェックするということをやり始めるので、ファイル数が数千から数万個以上あるようなときには、無駄な時間ばかりかかる。
どうせこっちは先に容量を調べているのでコピー可能なことはわかっている。
まあなんというか Windows 特有のお節介というやつなので、そのお節介を焼かせなければいいのである。そういうときは xcopy なりを使えばいいのだけど、Vista 以降はもっと便利な robocopy というツールがある。

his-pc という別の PCの共有名 docs のファイル群をツリーを維持してまるまるコピーするには
  • robocopy \\his-pc\docs .\ /mir /r:10 /w:1
などとすればよい。オプションが最後尾につくのが *nix 使いからするとものすごく気持ち悪いがまあそれはさておき。
このコマンドによって his-pc の共有名 docs からカレントディレクトリに、その中身のファイル郡がそのままコピーされる。厳密にいうと /mir オプションによってミラーリングをするので、コピー先にファイルがあるとコピー元と同期されたり削除されたりする。
ファイルのコピーの失敗にはあらゆる原因が考えられる。たとえばアクセス権がなかったとか、ネットワークが一時的に不調だったとか、そういう時に robocopy はご丁寧にリトライをやってくれるのだけど、デフォルトでは 1 ファイルにつき 30 秒待機したり 100 万回やりなおしたりするので、 /r や /w スイッチで指定してやる。r はリトライの回数、w が待機の秒数だ。

0 件のコメント:

コメントを投稿