Windowsの標準環境でファイルやフォルダのバックアップを行う際、最も強力なツールの一つが「Robocopy」です。
GUIによるドラッグ&ドロップ操作では、大量のデータを扱う際にエラーが発生したり、処理が中断されたりすることが少なくありません。
一方で、コマンドプロンプトから利用できるRobocopyは、高度な同期機能やミラーリング機能を備えており、プロフェッショナルな現場でも広く利用されています。
本記事では、Robocopyを用いたフォルダ同期の基本から、運用に役立つ具体的なオプションの活用方法までを解説します。
Robocopyとは何か
Robocopy(Robust File Copy)は、Windowsに標準で搭載されている高機能なファイルコピー用コマンドラインユーティリティです。
その名の通り「堅牢な(Robust)」コピーを実現するために設計されており、ネットワークの瞬断が発生しても再試行を行う機能を持っています。
従来のcopyコマンドやxcopyコマンドと比較して、処理速度が速く、詳細なログ出力が可能です。
また、ディレクトリ構造をそのまま維持しながら、差分データのみを転送できる点が大きな特徴です。
2026年現在のWindows環境においても、サーバー運用や個人PCのバックアップにおいて欠かせないツールとなっています。
Robocopyの基本構文
Robocopyを利用するためには、まずコマンドプロンプトを起動し、正しい構文を入力する必要があります。
基本的な構文は以下の通りです。
robocopy [コピー元] [コピー先] [オプション]
この構成を理解することで、複雑な同期処理もスムーズに記述できるようになります。
コピー元とコピー先の指定方法
コピー元とコピー先には、フォルダのパスを指定します。
パスにスペースが含まれる場合は、ダブルクォーテーションで囲む必要があるため注意してください。
例えば、C:\Work DataというフォルダをD:\Backupにコピーしたい場合は、以下のように記述します。
robocopy "C:\Work Data" "D:\Backup"
ミラーリング機能「/mir」の仕組みと注意点
フォルダを完全に同期させたい場合に最も多用されるのが、/mirオプションです。
このオプションは「Mirror(ミラー)」の略であり、コピー元とコピー先の内容を同一の状態に保ちます。
/mirオプションの動作
/mirは、内部的に/e(空のディレクトリを含むサブディレクトリのコピー)と/purge(コピー元に存在しないコピー先のファイルを削除)を組み合わせた動作をします。
つまり、コピー元でファイルが削除された場合、次回の同期時にコピー先のファイルも自動的に削除されます。
使用時の重大な注意点
/mirオプションを使用する際は、コピー先の指定を絶対に間違えないでください。
もし誤って重要なデータが入っているフォルダをコピー先に指定してしまうと、コピー元に存在しないデータはすべて消去されてしまいます。
初めて実行する際は、後述するテスト用のオプションを併用することを強く推奨します。
実務で役立つ主要なオプション一覧
Robocopyには、同期の精度や効率を高めるためのオプションが数多く用意されています。
よく使われるものを表にまとめました。
| オプション | 内容 |
|---|---|
/mir | ディレクトリツリーをミラーリングする(同期)。 |
/e | 空のディレクトリを含めてサブディレクトリをコピーする。 |
/z | ネットワーク切断時に再開可能なモード(再起動可能モード)でコピーする。 |
/mt[:n] | マルチスレッド処理を行う(デフォルトは8、最大128)。 |
/r:n | 失敗したコピーに対する再試行回数を指定する(デフォルトは100万回)。 |
/w:n | 再試行の間の待機時間を秒単位で指定する(デフォルトは30秒)。 |
/log:ファイル名 | 実行結果をログファイルに出力する(既存のログは上書き)。 |
/l | テスト実行。実際にはコピーせず、対象となるファイルを表示する。 |
フォルダ同期の実践ステップ
それでは、実際にフォルダを同期する際の手順を具体的に見ていきましょう。
ステップ1:テスト実行(ドライラン)
まずは、どのファイルが操作対象になるかを確認するために、/lオプションを付けて実行します。
robocopy C:\Source D:\Backup /mir /l
実行結果を確認し、「*EXTRA File」と表示されているものが、コピー先から削除される予定のファイルです。
ステップ2:マルチスレッドで高速同期
問題がなければ、マルチスレッドオプションを追加して実際に同期を開始します。
最新のPC環境であれば、/mt:32程度を指定することで劇的に速度が向上します。
robocopy C:\Source D:\Backup /mir /mt:32 /z
合計 コピー済み スキップ 不一致 失敗 追加
ディレクトリ: 1 0 1 0 0 0
ファイル: 150 150 0 0 0 0
バイト: 1.25 g 1.25 g 0 0 0 0
終了時刻: 2026年5月24日 10:00:00
ログの出力とトラブルシューティング
定期的なバックアップを行う場合、処理が正常に終わったかを後から確認できるようにログを残すことが重要です。
ログファイルへの記録
/log:オプションを使用すると、コマンドプロンプトの画面には何も表示されなくなり、すべての結果がテキストファイルに書き込まれます。
既存のログを保持しつつ追記したい場合は、/log+:ファイル名を使用してください。
robocopy C:\Source D:\Backup /mir /log:C:\Logs\backup_log.txt /np /ndl
ここで使用している/npは進捗パーセントを表示しない設定、/ndlはディレクトリ名をログに記録しない設定で、ログファイルを読みやすくします。
再試行設定のカスタマイズ
デフォルトの設定では、ファイルが使用中の場合に100万回再試行を繰り返してしまいます。
これでは処理が終わりませんので、/r:3 /w:5のように回数と待ち時間を短縮するのが一般的です。
これにより、ロックされているファイルがあっても数回の試行後にスキップして次の処理へ進むことができます。
バッチファイル化による自動化
毎回コマンドを入力するのは手間がかかるため、同期処理をバッチファイル(.bat)に保存しておくのが効率的です。
バッチファイルの作成例
メモ帳などのテキストエディタを開き、以下の内容を入力して「backup.bat」という名前で保存します。
@echo off
set SOURCE="C:\Users\User\Documents"
set DEST="D:\Backup\Documents"
set LOG="C:\Logs\sync_log.txt"
echo 同期を開始します...
robocopy %SOURCE% %DEST% /mir /mt:16 /r:3 /w:5 /log+:%LOG% /np /tee
echo 同期が完了しました。
pause
/teeオプションを付けると、ログファイルに出力しながらコマンドプロンプト画面にも結果を表示できます。
タスクスケジューラでの定期実行
作成したバッチファイルをWindowsの「タスクスケジューラ」に登録すれば、毎日決まった時間に自動でミラーリングを行うことが可能です。
「操作」タブでバッチファイルを指定し、「トリガー」タブで実行時間を設定してください。
これにより、人手を介さずに常に最新のバックアップを維持できるようになります。
Robocopyの高度なテクニック
さらに使いこなしたい方のために、特定の条件でファイルを抽出するテクニックを紹介します。
特定のファイル形式を除外する
/xfオプション(eXclude Files)を使用すると、一時ファイルや不要な形式のファイルを除外できます。
robocopy C:\Source D:\Backup /mir /xf *.tmp *.bak ~*
同様に、/xdオプションを使用すれば、特定のディレクトリ(例:キャッシュフォルダなど)をコピー対象から外すことができます。
属性情報のコピー設定
デフォルトではファイルデータとタイムスタンプのみがコピーされますが、/copyallを使用すると、NTFSアクセス許可(セキュリティ情報)や所有者情報も含めて完全に複製します。
ただし、このオプションを使用するには管理者権限でコマンドプロンプトを実行する必要があります。
まとめ
Robocopyは、コマンドプロンプトから利用できる非常に強力かつ信頼性の高い同期ツールです。
/mirオプションを活用することで、複雑なフォルダ構造も簡単に最新の状態に保つことができます。
一方で、同期による削除のリスクを理解し、/lオプションでのテスト実行やログの確認を怠らないようにしましょう。
今回解説した各種オプションを組み合わせることで、自身の環境に最適な自動バックアップシステムを構築できるはずです。
まずはシンプルなディレクトリの同期から試し、徐々にバッチファイル化やタスクスケジューラへの登録へとステップアップしてみてください。
