新しいサーバー上からrobocopyを実行し、古いサーバーの共有フォルダから新しいサーバーのローカルディスクにコピーする場合は次のようにします。
robocopy ¥¥OLDSERVER¥SHARE¥PATH C:¥SHARE¥PATH /E /COPYALL
ドメインが異なる2台の間で使うと、上記のコマンドではセキュリティ情報(NTFS ACL)がコピーされない問題が発生します。(異なるドメインのメンバ サーバーの間でファイルを移行するにはローカル グループを解決することはできません。)
その場合は「/MIR」を付けるとセキュリティ情報もコピーされます。
robocopy ¥¥OLDSERVER¥SHARE¥PATH C:¥SHARE¥PATH /E /COPYALL /MIR
さらにログを残したい場合は「/LOG:ファイルパス」を使います。MIRを指定すると進行状況がログに書き込まれて邪魔なので「/NP」で消してしまいます。
robocopy ¥¥OLDSERVER¥SHARE¥PATH C:¥SHARE¥PATH /E /COPYALL /MIR /LOG:C:¥SHARE¥LOG.TXT /NP
ミラーリング
robocopy C:¥userdata ¥¥server¥userdata /MIR
ソースパスの内容ととデスティネーションパスを全く同じにしたい場合に使います。/MIR オプションは,/E(空のものも含めてサブフォルダをコピーする) と /PURGE(コピー元にないファイル・フォルダを削除する) を両方指定したのと等価です。
コピー先のファイル削除をしない場合は
robocopy C:¥userdata ¥¥server¥userdata /E
のように /E のみを指定します。
エラーを無視してコピー
エクスプローラなどで,フォルダごとコピーしようとすると,長い間待たされたあげくエラーが発生して途中で止まってしまいガッカリという経験はありませんか。「とりあえず,エラーが起きないファイルだけでも全部コピーしてくれればいいのに」
robocopy C:¥userdata ¥¥server¥userdata /R:0 /E
/R:0で,エラー時のリトライ回数を0にしています。/Eオプションでソースフォルダの全てをコピーします。これでソースフォルダのファイルをエラーが発生しても中断することなくコピーできます。
robocopy C:¥userdata ¥¥server¥userdata /R:0 /E /NFL /NP > COPY.LOG
さらに/NPや/NFLオプションをつけるて出力をファイルにリダイレクトすると,エラーが発生したログだけが残りますので,コピーできなかったファイルを特定できます。
コピー先のいらないファイルを削除するだけ
デスティネーションフォルダにはあるがソースフォルダにないファイル。Robocopy のファイルクラスで言うとExtra。いわゆるゴミのファイルですが,そのファイルを削除するのみで,ファイルのコピーは行わないということもできます。
robocopy C:¥userdata ¥¥server¥userdata /NOCOPY /PURGE
古いファイルはコピーしない
Robocopy のデフォルトの動作では,Changed, Newer, Older のクラスのファイルがコピーされます。ソースの方が古いファイルであっても,コピーされるのです。古いファイルはコピー対象から外したい場合は/XOオプションを使います。
robocopy C:¥userdata ¥¥server¥userdata /MIR /XO
NASにコピーする
NAS製品の中では,タイムスタンプの精度がFATなみの2秒というものがあります。そのくせNTFSを名乗っている。そんなディスクとNTFSのディスクの間でミラーリングをした場合に,タイムスタンプの精度の違いにより,毎回コピーされてしまったり全然コピーされなかったりとうまく動かないことがあります。そんなことが起きないように,/FFT オプションを使います。
robocopy C:¥userdata ¥¥server¥userdata /MIR /FFT
/FFTでは,タイムスタンプの精度が2秒であるとしてコピーをします。
コピーではなく移動する
コピーではなくフォルダ構造全体を移動したい場合は,/MOVE オプションを使います。
robocopy C:¥userdata ¥¥server¥userdata /MOVE
よく似た感じの /MOV オプションもあります。こちらは,コピー元に(空っぽの)フォルダ構造が残ります。/MOVE ではフォルダも含めて元のパスにはなにもなくなります。
/MOVE ではフォルダも含めて元のパスにはなにもなくなります。