Robocopyとは?差分コピーの仕組みからコマンド・オプション・自動バックアップまでわかりやすく解説|サイバーセキュリティ.com

Robocopyとは?差分コピーの仕組みからコマンド・オプション・自動バックアップまでわかりやすく解説



ファイルサーバの移行でデータを丸ごとコピーしたい」「毎日自動でバックアップを取りたい」「変更したファイルだけを効率よく同期したい」——そんな場面で活躍するのが、Windowsに標準搭載されている「Robocopy(Robust File Copy)」です。

Robocopyは追加インストール不要で使えるにもかかわらず、差分コピー・ミラーリング・ログ出力・自動リトライなど、バックアップツールに必要な機能を一通り備えています。

本記事では、差分コピーを中心に基本の使い方から実用的なオプション、タスクスケジューラーを使った定期実行まで、初心者にもわかりやすく解説します。

Robocopyとは?

Robocopy(Robust File Copy)は、Windowsに標準搭載されているファイルコピー用のコマンドラインツールです。Windows NT 4.0から導入され、Windows Vista以降はOSに標準で組み込まれているため、追加インストールなしで使用できます。

通常のコピー(xcopy・エクスプローラー)との違い

機能 通常コピー(エクスプローラー) xcopy Robocopy
差分コピー × 毎回全コピー △ 日付比較のみ ◎ 日付+サイズで比較
ミラーリング × × ◎ /MIRオプション
中断・再開 × × ◎ /Zオプション
自動リトライ × × ◎ /R:n /W:nオプション
権限・属性の保持 △ 一部のみ △ 一部のみ ◎ /COPYALLオプション
ログ出力 × ◎ /LOGオプション
ネットワーク越しの転送 △ 不安定 ◎ 堅牢で安定

Robocopyの最大の特徴は差分コピーです。コピー元とコピー先のファイルを日付・サイズで比較し、変更のあったファイルだけを転送します。大量のファイルを定期的にバックアップする場合でも、初回以降は変更分だけが転送されるため、時間と帯域幅を大幅に節約できます。

差分コピーの仕組み

Robocopyの差分コピーは、以下の2つの情報でコピー元とコピー先を比較します。

  • ファイルの最終更新日時(タイムスタンプ):コピー元のほうが新しければ転送対象にする
  • ファイルサイズ:サイズが異なれば転送対象にする

この2つが一致する場合はスキップされます。そのため、内容が同じファイルは何度実行しても再転送されません。

差分コピーとミラーリングの違い
差分コピーは「追加・変更されたファイルを転送する」のに対し、ミラーリング(/MIRオプション)は「コピー元で削除されたファイルをコピー先でも削除する」動作が加わります。バックアップ目的では用途に応じて使い分けましょう。

差分コピーとミラーリングの動作の違い

Robocopyの基本構文

Robocopyの基本的な書き方は以下のとおりです。

robocopy <コピー元> <コピー先> [ファイルパターン] [オプション]

基本的なコマンド例

例①:基本的なファイルコピー(差分あり)

robocopy C:\source D:\destination

C:\source から D:\destination へファイルをコピーします。変更のないファイルはスキップされます。

例②:サブフォルダと空フォルダを含めてコピー

robocopy C:\source D:\destination /E

/E オプションで、空のフォルダも含めたすべてのサブフォルダをコピーします。フォルダ構造ごとコピーしたい場合に使います。

例③:ミラーリング(コピー元と完全同期)

robocopy C:\source D:\destination /MIR

/MIR オプションは、コピー元で削除されたファイルをコピー先でも削除してコピー元と完全同期します。コピー先の独自ファイルも削除されるため注意が必要です。

例④:実務で使える差分の完全コピーコマンド

robocopy “C:\source” “D:\destination” /COPYALL /MIR /ZB /NP /R:1 /W:10 /LOG:”C:\Log\robocopy_%date:~0,4%%date:~5,2%%date:~8,2%.txt”

権限・属性・タイムスタンプも含めたすべてのデータをコピーし、ログを日付つきファイルに保存する実用コマンドです。各オプションの意味は次のセクションで解説します。

Robocopyのオプション一覧

よく使うオプションをカテゴリ別にまとめました。

コピー範囲に関するオプション

オプション 意味 使うタイミング
/S 空でないサブフォルダをコピー フォルダ構造ごとコピーしたいとき
/E 空のフォルダも含めすべてのサブフォルダをコピー フォルダ構造を完全に再現したいとき
/MIR ミラーリング(/Eと/PURGEの組み合わせ) コピー元と完全同期したいとき(削除も反映)
/PURGE コピー元に存在しないコピー先のファイルを削除 不要ファイルを削除しながら同期したいとき

コピーするデータの種類に関するオプション

オプション 意味 備考
/COPY:DAT データ・属性・タイムスタンプをコピー(デフォルト) 通常はこれで十分
/COPYALL データ・属性・タイムスタンプ・セキュリティ・所有者・監査情報をすべてコピー ファイルサーバ移行など完全コピー時に使用
/DCOPY:DAT ディレクトリのデータ・属性・タイムスタンプをコピー フォルダのタイムスタンプも保持したいとき
/SEC セキュリティ情報(ACL)をコピー アクセス権も引き継ぎたいとき

エラー処理・再試行に関するオプション

オプション 意味 推奨値
/R:n 失敗時の再試行回数(デフォルト:1,000,000回) /R:1 を強く推奨(デフォルトのままだと1ファイルで約347日待つ場合がある)
/W:n 再試行間の待機時間(秒)(デフォルト:30秒) /W:10 程度が実用的
/Z 再起動可能モード(中断しても途中から再開できる) 大きなファイルやネットワーク経由のとき
/ZB /Zと/Bの組み合わせ(バックアップモード+再起動可能) アクセス権のないファイルもコピーしたいとき
/R と /W は必ず指定すること
デフォルトの /R:1000000(100万回)× /W:30(30秒)= 1ファイルで最大約347日待つことになります。ファイルサーバ移行などで1ファイルのエラーが発生した場合、次のファイルに進まずにひたすら再試行し続けます。/R:1 /W:10 は必ず指定してください。

ログ・表示に関するオプション

オプション 意味
/LOG:ファイル名 ログをファイルに出力(既存ログは上書き)
/LOG+:ファイル名 ログをファイルに追記
/NP 進行状況(%)を非表示にする(/LOGと一緒に使う場合は必須)
/V スキップされたファイルもログに記録する
/BYTES ファイルサイズをバイトで表示

すべてのデータを完全コピーする実用コマンド

ファイルサーバの移行など「ファイルだけでなく権限・属性・タイムスタンプもすべて引き継ぎたい」場合のコマンドです。

robocopy “C:\source” “D:\destination” /COPYALL /MIR /ZB /NP /V /R:1 /W:10 /BYTES /LOG:”C:\Log\%date:~0,4%%date:~5,2%%date:~8,2%.txt”

各オプションの意味

オプション 意味 なぜ必要か
/COPYALL データ・属性・タイムスタンプ・セキュリティ・所有者・監査情報をすべてコピー ファイルの権限情報も引き継ぐため
/MIR ミラーリング(削除されたファイルもコピー先で削除) コピー元と完全同期するため
/ZB 再起動可能モード+バックアップモード アクセス拒否ファイルもコピーし、中断しても再開できるようにするため
/NP 進行状況(%)を非表示 /LOGと併用時に必須(進捗率がログに大量出力されるのを防ぐ)
/V スキップされたファイルもログに記録 後でログを確認するときに何がスキップされたかわかるようにするため
/R:1 失敗時の再試行回数を1回に設定 デフォルトの100万回のままにしないため(必須)
/W:10 再試行の待機時間を10秒に設定 デフォルトの30秒から短縮するため
/BYTES サイズをバイト単位で表示 ログで正確なサイズを確認するため
/LOG:”パス” ログを日付つきファイルに保存 実行結果を後から確認するため
 /LOGと/NPを必ずセットで使う
/LOGオプションを使う際に/NPを付け忘れると、進行状況の「0%」「1%」「2%」…という表示がすべてログファイルに書き込まれ、数GB単位の読めないログが生成されます。/LOGを使うときは必ず/NPを一緒に指定してください。

定期バックアップを自動化する方法

上記のコマンドをバッチファイル(.bat)にして、タスクスケジューラーに登録することで定期的な自動バックアップを実現できます。

Step 1:バッチファイル(.bat)を作成する

  1. メモ帳を開き、上記のrobocopyコマンドを貼り付ける
  2. ファイルを「robocopy_backup.txt」として保存する
  3. ファイルの拡張子を「.txt」から「.bat」に変更する(警告が出たら「はい」をクリック)

Step 2:タスクスケジューラーに登録する

  1. 「タスクスケジューラー」を開く(スタートメニューで検索)
  2. 「タスクスケジューラーライブラリ」を右クリック → 「タスクの作成」を選択
  3. 「全般」タブで名前を入力し、「ユーザーがログオンしているかどうかにかかわらず実行する」を選択、「最上位の特権で実行する」にチェックを入れる
  4. 「トリガー」タブで「新規」をクリックし、実行間隔(例:毎日0時)を設定する
  5. 「操作」タブで「新規」をクリックし、作成したbatファイルを選択する
  6. 「条件」タブで「AC電源を使用している場合のみタスクを開始する」のチェックを外す
  7. 「設定」タブで「タスクが既に実行中の場合」を「新しいインスタンスを開始しない」に変更する
  8. 「OK」をクリックして保存する
バックアップとしての注意点
Robocopyは簡易的なバックアップには有効ですが、製品バックアップツールと比べて「世代管理(過去のバージョンの保持)ができない」「誤って上書き・更新したファイルは救えない」という制限があります。重要なデータには専用のバックアップ製品の導入も検討してください。

バッチファイル作成からタスクスケジューラー登録までの流れ

セキュリティ観点から見たRobocopyの注意点

Robocopyはシステム管理者が使う強力なツールであるため、以下の点に注意が必要です。

/MIRオプションの取り扱いに注意する

/MIRオプションはコピー元で削除されたファイルをコピー先でも削除します。誤ってコピー元のファイルを削除してしまった場合、その後に/MIRを実行するとコピー先からも削除されてしまいます。本番環境で最初に実行する際は、/L(ドライランモード:実際にはコピーせず結果だけ表示)で事前確認することを強く推奨します。

/ZBオプションはアクセス権を迂回する

/ZBのバックアップモードは、通常アクセスできないファイルも強制的にコピーします。悪用するとアクセス権の設定を無視したデータ抜き取りが可能になります。企業環境での使用は、管理者権限のある信頼できるアカウントのみに限定し、ログを必ず記録するようにしてください。

ログファイルの定期確認

自動バックアップを設定したまま放置するのは危険です。エラーが発生していても気づかないケースがあります。/LOGオプションでログを出力し、定期的にエラーがないか確認する運用ルールを設けてください。

よくある質問(FAQ)

Q. RobocopyはどのバージョンのWindowsで使えますか?

Windows Vista以降はOSに標準搭載されています。Windows 10・11・Windows Server 2016/2019/2022でも使用できます。コマンドプロンプトまたはPowerShellで「robocopy /?」と入力するとヘルプが表示され、インストール状況を確認できます。

Q. 差分コピーで「変更されていないファイルも再コピーされてしまう」場合は?

FATとNTFSのファイルシステム間でコピーする場合、タイムスタンプの精度の違い(FATは2秒単位)でファイルが「変更あり」と誤判定されることがあります。この場合は/FFT(FAT File Times)オプションを追加することで解消できます。

Q. /MIRと/Eの違いは何ですか?

/Eは「空のフォルダも含めてコピーする」だけで、コピー先の既存ファイルは削除しません。/MIRは/Eに加えて「コピー元で削除されたファイルをコピー先でも削除する(/PURGE)」機能が加わります。完全同期には/MIR、コピー先のファイルを残したい場合は/Eを使います。

Q. ネットワーク共有フォルダへのコピーはできますか?

できます。コピー元・コピー先にネットワークパス(\\サーバー名\共有フォルダ名)を指定できます。ネットワーク経由のコピーでは/Z(再起動可能モード)を使うことで、接続が途切れても途中から再開できます。

Q. エラーが発生したファイルだけを確認するには?

ログファイルを出力(/LOGオプション)して確認するのが基本です。ログ内で「ERROR」や「FAILED」を検索するとエラーが発生したファイルを特定できます。/V オプションも合わせて使うことで、スキップされたファイルもログに記録されます。

まとめ

RobocopyはWindowsに標準搭載されているにもかかわらず、差分コピー・ミラーリング・自動リトライ・ログ出力・権限保持など、バックアップツールとして必要な機能を一通り備えた非常に優秀なツールです。

差分コピーを活用することで、大量のファイルでも2回目以降は変更分だけを転送できるため、時間と帯域幅を大幅に節約できます。/R:1 /W:10 は必ず指定すること、/MIRは実行前に/Lでドライランを行うこと、/LOGで必ずログを残すことの3点を守れば、安全で効率的なファイル管理が実現できます。

タスクスケジューラーと組み合わせれば、設定一度で毎日自動バックアップも可能です。まずは小規模なフォルダで試してみてください。

SNSでもご購読できます。