ROBOCOPY(高度なコピー)

にメンテナンス済み

フォルダ単位のバックアップやミラーリングを行いたいとき、copyxcopy では機能が不足する場合があります。

ROBOCOPY(Robust File Copy)は、Windows に標準搭載されている高機能なファイルコピーコマンドです。ミラーリング、差分コピー、再試行制御、ログ出力など、堅牢なファイルコピーを実現する豊富な機能を備えています。

この記事では、ROBOCOPY コマンドの基本から実践的なバックアップ運用まで、具体的なサンプルコードを交えて解説します。

ROBOCOPY の基本構文

構文
ROBOCOPY コピー元 コピー先 [ファイル] [オプション]
要素説明
コピー元コピー元のフォルダパス
コピー先コピー先のフォルダパス
ファイルコピーするファイル名(ワイルドカード可、省略時は *.*
オプション動作を制御するオプション

基本的な使用例

robocopy C:\Source D:\Backup
×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>robocopy C:\Source D:\Backup
-------------------------------------------------------------------------------
ROBOCOPY :: Windows の堅牢性カーネル ファイル コピー
-------------------------------------------------------------------------------
開始: 2026年3月11日 10:00:00
コピー元 : C:\Source\
コピー先 : D:\Backup\
ファイル: .
合計 コピー済み スキップ 不一致 失敗 その他
ディレクトリ: 3 1 2 0 0 0
ファイル: 5 5 0 0 0 0
C:\users\user>

主要オプション一覧

コピーオプション

オプション説明
/E空のフォルダを含め、サブフォルダをコピーする
/Sサブフォルダをコピーする(空フォルダは除く)
/MIRミラーリング(コピー元にないファイルは削除)
/PURGEコピー元に存在しないファイルを削除
/MOVファイルを移動(コピー後に元ファイルを削除)
/MOVEファイルとフォルダを移動
/Z再開可能モードでコピー
/COPY:コピーフラグコピーする属性を指定(D:データ, A:属性, T:タイムスタンプ, S:セキュリティ)

選択オプション

オプション説明
/XF ファイル指定したファイルを除外
/XD フォルダ指定したフォルダを除外
/XO古いファイルを除外(差分コピー)
/MAXAGE:nn 日より古いファイルを除外
/MINAGE:nn 日より新しいファイルを除外
/MAX:nn バイトより大きいファイルを除外

再試行オプション

オプション説明
/R:n失敗時の再試行回数(既定値: 1,000,000)
/W:n再試行間隔(秒、既定値: 30)

ログオプション

オプション説明
/LOG:ファイルログをファイルに出力(上書き)
/LOG+:ファイルログをファイルに追記
/TEEコンソールとログファイルの両方に出力
/NP進捗パーセント表示を抑制
/NFLファイル名のログ出力を抑制
/NDLディレクトリ名のログ出力を抑制
/V詳細出力
/R オプションの既定値に注意

/R オプションの既定値は 1,000,000 回です。ネットワーク上のファイルコピーで接続が切れた場合、非常に長い時間再試行し続ける可能性があります。実運用では必ず /R:3 のように明示的に設定してください。

サブフォルダを含めてコピーする(/E)

/E オプションを使用すると、サブフォルダ(空のフォルダを含む)を再帰的にコピーします。

robocopy C:\Source D:\Backup /E

ミラーリング(/MIR)

/MIR オプションは、コピー元のフォルダ構造をコピー先に完全に再現します。コピー先にだけ存在するファイルは削除されます。

robocopy C:\Source D:\Backup /MIR
/MIR オプションの注意点

/MIR はコピー先にだけ存在するファイルやフォルダを削除します。コピー先のパスを間違えると、意図しないファイルが削除される可能性があります。初回は必ず /L オプションでテスト実行してください。

テスト実行(/L)

/L オプションを使用すると、実際にはコピーを行わず、どのファイルがコピー・削除されるかだけを表示します。

robocopy C:\Source D:\Backup /MIR /L
チェック

本番のバックアップを実行する前に、必ず /L オプションでテスト実行することをお勧めします。特に /MIR/PURGE を使用する場合は、想定外の削除を防ぐことができます。

ログ出力

ROBOCOPY の実行結果をログファイルに記録する方法です。

ログを出力する
robocopy C:\Source D:\Backup /E /LOG:"C:\Logs\backup.log" /TEE /NP
オプションの意味説明
/LOG:ログファイルを指定(上書き)
/TEEコンソールとログの両方に表示
/NP進捗パーセント表示を省略(ログがすっきり)

追記モードで記録した場合は /LOG+: を使用します。

ログを追記する
robocopy C:\Source D:\Backup /E /LOG+:"C:\Logs\backup.log" /TEE /NP

特定のファイルやフォルダを除外する

ファイルの除外(/XF)

一時ファイルを除外してコピー
robocopy C:\Source D:\Backup /E /XF *.tmp *.log

フォルダの除外(/XD)

特定のフォルダを除外してコピー
robocopy C:\Source D:\Backup /E /XD "C:\Source\temp" "C:\Source\.git"

実践例:自動バックアップバッチ

ROBOCOPY を使用した実用的なバックアップバッチファイルの例です。

backup.cmd
@echo off
setlocal

rem バックアップの設定
set SOURCE=C:\Users\user\Documents
set DEST=D:\Backup\Documents
set LOGFILE=D:\Backup\Logs\backup_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.log

rem ログフォルダが存在しない場合は作成
if not exist "D:\Backup\Logs" mkdir "D:\Backup\Logs"

echo バックアップを開始します...
echo コピー元: %SOURCE%
echo コピー先: %DEST%

robocopy "%SOURCE%" "%DEST%" /MIR /R:3 /W:5 /LOG+:"%LOGFILE%" /TEE /NP /XD ".git" "node_modules"

rem 終了コードの確認
IF %ERRORLEVEL% LEQ 3 (
    echo バックアップが正常に完了しました。
) ELSE (
    echo エラーが発生しました。ログを確認してください。
)

endlocal

ROBOCOPY の終了コード

ROBOCOPY は独自の終了コードを返します。一般的なコマンドとは異なり、0 以外でも正常な場合があります。

終了コード意味
0コピーなし(ファイルはすべて同一)
1ファイルが正常にコピーされた
2余分なファイルがコピー先に存在
3コピーされたファイル+余分なファイルあり
8いくつかのファイルがコピーできなかった
16致命的なエラー(コピーが実行されなかった)
終了コードの判定

終了コードが 0〜3 であれば正常、8 以上 の場合はエラーとして扱うのが一般的です。バッチファイルで判定する際は IF %ERRORLEVEL% LEQ 3 のように記述します。

ROBOCOPY と XCOPY の違い

特徴ROBOCOPYXCOPY
ミラーリング○(/MIR)×
再試行制御○(/R, /W)×
ログ出力○(/LOG, /TEE)×
再開可能モード○(/Z)×
差分コピー○(/XO)○(/D)
ネットワーク対応優れた耐障害性基本的な対応
終了コード詳細(0〜16)基本的(0〜5)

まとめ

この記事では、ROBOCOPY コマンドの使い方について解説しました。

ROBOCOPY は Windows に標準搭載されている強力なファイルコピーツールです。特にバックアップ運用では、ミラーリング・ログ出力・再試行制御の組み合わせにより、堅牢なバックアップ体制を構築できます。

関連記事

練習問題

練習問題

ROBOCOPY の終了コードの判定について、一般的に正しい説明はどれですか?

回答がサーバーに送信されることはありません
#コマンドプロンプト #バッチファイル #ROBOCOPY #バックアップ #ファイル操作