Help us understand the problem. What is going on with this article?

RobocopyのTips

More than 1 year has passed since last update.

Robocopyに、少し慣れた人向けのTipsです。

3つのカテゴリーに分けて記述します。
1. 安全にコピー
2. 正確にコピー
3. 短い時間でコピー

なお、初めて使う人には、先にTechNetや@ITの記事をお勧めします。
TechNet Robocopy
@IT Windowsの「robocopy」コマンドでフォルダをバックアップ/同期させる

安全にコピー

1. /Lオプションでの予行(dryrun)で、意図しない削除を防ぐ

実行する時は、まず/Lをつけます。ログが想定したものか確認し、その後/Lを外すことで安全にコピーできます。

2. 隠しファイル、システムファイルを表示することで、意図しない削除を防ぐ

コピー先・コピー元を確認する時に、エクスプローラの設定で隠しファイルやシステムファイルを表示します。
表示することで、想定外の上書き・削除を回避し、安全にコピーできます。
特にドライブルートで、"System Volume Information"を上書きしてしまうと影響が大きいので注意です。

3. タスクスケジューラへのRobocopy入りbatでの、停止漏れに注意する

Robocopy入りbatを、タスクスケジューラで実行する場合、
タスクを中断することでbatが止まっても、batから実行されたRobocopyは停止されません
Robocopyが残ることで、意図しないリソース消費や、ファイルサーバ移行の切り替え後にデータが上書きされるというようなことも起きうるので注意してください。タスクスケジューラでRobocopy入りbatを実行したい場合、停止はtaskkill /F /IM "robocopy.exe"等で対処します。
※ Robocopyというより、タスクスケジューラTipsではあります。

4. システムのリソース逼迫に注意

Robocopyはディスクとネットワークに負荷をかけます。/MTオプションや並列実行する場合は、他サービスに影響を与えないように注意してください。
コピー元・先サーバ、データが通る経路のNW機器のシステムリソースを可視化したり、それが難しければ、
夜間や週末などユーザ影響が少ない時間帯での実行や、/IPGオプションやグループポリシーのQoS(送信制限のみ)でデータ流量を絞りながら実行してください。

正確にコピー

1. Backup Operators権限と/Bオプション

よくあるコピー漏れ理由は、NTFSアクセス権です。Backup Operators権限を持つユーザで、/Bオプション付きRobocopyを実行することで、NTFSアクセス権を無視してコピーすることができます。なお、/BオプションつきRobocopyは、管理者として実行する必要があります。また、Backup Operators権限はコピー元、コピー先の両方のホストでつけてください。

参考
https://technet.microsoft.com/ja-jp/library/cc771990(v=ws.11).aspx
ファイルを保護しているアクセス許可にかかわらず、コンピューター上のファイルのバックアップと復元を行うことができます。

2. Robocopyでの再同期でのアクセス権反映に注意

一度Robocopyでコピーしたフォルダを、再度、同期する場合、初回コピー後に変更されたNTFSアクセス権が、コピー先に反映されない場合があります。その場合、/SECFIXを利用してください。

3. バージョンが違うと使えるオプションが違う場合がある

Robocopyは枯れたツールではありますが、いまだににバージョンアップされています。OSやWindowsUpdateによりバージョンが変わり、使えるオプションも変わることに注意してください。

参考(ドイツ語サイトですが、バージョンによりオプションが変わることがわかればOKです)
http://yarcgui.wilkes.es/De/RoboCopy/

4. バグに注意

Robocopyにもバグはあります。思ったように動かない場合、MicrosoftのKBからバグ情報を確認してみてください。

参考 検索キーワード inurl:support.microsoft.com Robocopy

5. オープンファイルをコピーする

Robocopyでオープン中のファイルをコピーできない場合、コピー元ホストの対象ドライブでVolume Shadow Copy設定をして、diskshadowコマンドとRobocopyを組み合わせることでコピーできます。
※ Robocopyの問題というより、コピー元ホストのファイルシステムの制約

6. "8.3形式ファイル名(ショートファイルネーム)"のファイルがある場合には注意

THISIS~1.txtのような、名前のファイルがあるフォルダでコピーがおかしい場合、
ショートファイルネームの問題を確認してみてください。
※ 今となっては希です
※ Robocopyの問題というより、ファイルシステム由来の制約だと思います。

参考 How Windows Generates 8.3 File Names from Long File Names
参考 DOS形式(8.3形式)とrobocopyについて

短い時間でコピー

1. Robocopyを並列実行する場合の、1つのIPアドレスに複数のホスト名をつける

Windowsでリモートホストに、同一ホスト名で複数のTCP接続を張ると、redirectorが1つのTCP接続に束ねる動きがある(※参考)ので、hosts等で1つのIPアドレスに複数のホスト名をつけると速度低下を防ぐことができ、短い時間でコピーできます。

下記のように、コピー元とコピー先の組み合わせが同じ処理を並列に実行する場合、
robocopy d:\test\src1 \\server1\dst1
robocopy d:\test\src2 \\server1\dst2
robocopy d:\test\src3 \\server1\dst3

hostsまたはDNSで、1つのIPアドレスに複数のホスト名をつける。

server1-001 192.168.0.2
server1-002 192.168.0.2
server1-003 192.168.0.2

その上で、以下のようにホスト名を修正して並列実行すると、速度低下が防げる。
robocopy d:\test\src1 \\server1-001\dst1
robocopy d:\test\src2 \\server1-002\dst2
robocopy d:\test\src3 \\server1-003\dst3

参考 How to use the File Server Capacity Tool (FSCT) on Server 2012 R2
Note: A separate TCP connection is required for each user (the redirector checks the server name and will collapse multiple connections into one if it can).

2. 可能な範囲でコピーする属性を省く

処理性能が同じとした場合、コピー時間は処理量に応じて変わります。
処理量は主に、ファイルサイズファイル・フォルダ数コピー対象とするファイル属性によって左右されます。
特に、ファイル・フォルダ数が大量の場合や、再同期を行う場合では、属性は省くことで、短い時間でコピーできます。

3. タスクスケジューラ実行時のタスク優先度を上げる

タスクスケジューラでプログラムを実行すると、デフォルトでは優先度が下がります。
Robocopyをタスクで実行する場合、優先度を上げると短い時間でコピーできます。
※ Robocopyというより、タスクスケジューラのTips

参考 検索キーワード タスクスケジューラ 優先度

Robocopyのトリッキーな使い方

指定フォルダ配下のフォルダだけを複製したい。

考え方は、/MIRで全部コピーをしつつ、/XF "*"でファイルコピーを除外します。

# まずは、/Lでテスト(実際にはコピーされません)
robocopy /L /MIR SOURCE_FOLDER DEST_FOLDER /XF "*"

# 想定通りなら、コピー実行
robocopy /MIR SOURCE_FOLDER DEST_FOLDER /XF "*"

fjtm
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away