ホームに戻る
出典 :
Robocopy | Microsoft Learn Windowsの「robocopy」コマンドでフォルダをバックアップ/同期させる:Tech TIPS - @IT Windowsのrobocopyコマンドでコピーするファイルの種類を選択/変更する:Tech TIPS - @IT Windowsのrobocopyコマンドでファイルコピー中断後に自動再開させる:Tech TIPS - @IT robocopyコマンドでwindows端末のデータをバックアップする方法 #Windows - Qiita
目次 :

Robocopy とは

Windows OSに標準搭載されるファイルコピー用のアプリケーション。2つのフォルダの内容を同期させる。
コマンドプロンプトの copy や xcopy のコマンドに無い以下の特徴を持つ。 このため、堅牢で確実性の高いコピーが可能であり、元々の用途であるリモートサーバ同士での同期にも適している。
尚、"robo" は "robot" ではなく "robust" (堅牢)に由来する。

Robocopy の詳細

Robocopy はシェルの機能ではなく、独立したアプリケーション( Robocopy.exe )である。
このため、コマンドプロンプトだけでなくPowerShellやWSL、自作のアプリケーションからも利用できる。
System32 、SysWOW64 それぞれの配下に存在するため、32ビット / 64ビットいずれの環境でも利用できる。

使用法

コマンドラインから以下の形式で呼び出す。
画像
※ : /NOSD 、または /NODD オプション指定時を除く。

ディレクトリの指定例

オプション一覧

リファレンスはリンク先を参照。
コピーオプション
オプション 説明 備考 記述例
/S サブディレクトリをコピーするが、空のディレクトリはコピーしない /E とは排他
/E 空のディレクトリを含むサブディレクトリをコピーする /S とは排他
/LEV:n コピー元ディレクトリツリーの上位 n レベルのみをコピーする n は自然数 # 上位 3 レベルのみをコピー robocopy source destination /LEV:3
/Z 再起動可能モードで実行する /B 、/ZB とは排他
/B バックアップモードで実行する /Z 、/ZB とは排他
/ZB 再起動可能モードで実行する /Z 、/B とは排他
アクセスが拒否された場合はバックアップモードを使用する
/J バッファーなしI/Oを使用する 大きなファイルで推奨
/EFSRAW 暗号化されたすべてのファイルを EFS RAW モードでコピーする
/COPY:<copyflags> コピーするファイルのプロパティ 指定可能な <copyflags>
  • D : データ
  • A : 属性
  • T : タイムスタンプ
  • X : 代替データストリームをスキップ
  • S : NTFS アクセス制御リスト (ACL)
  • O : 所有者情報
  • U : 監査情報
既定値は DAT
# ファイルのデータ、属性、タイムスタンプ、所有者情報をコピー robocopy source destination /COPY:DATO
/DCOPY:<copyflags> コピーするディレクトリのプロパティ 指定可能な <copyflags>
  • D : データ
  • A : 属性
  • T : タイムスタンプ
  • E : 拡張属性
  • X : 代替データストリームをスキップ
既定値は DA
# ディレクトリのデータ、属性、タイムスタンプ、拡張属性をコピー robocopy source destination /DCOPY:DATE
/SEC セキュリティを使用してコピーする /COPY:DATS と同等
/COPYALL ファイル情報をすべてコピーする /COPY:DATSOU
/NOCOPY ファイル情報をコピーしない /PURGE と共に使用すると便利
/SECFIX すべてのファイルのファイルセキュリティを修正する スキップしたファイルも含む
/TIMFIX すべてのファイルのファイル時刻を修正する スキップしたファイルも含む
/PURGE 既にコピー元に存在しないコピー先のファイル・ディレクトリを削除する
/MIR ディレクトリツリーをミラーリングする /E /PURGE と同等
/MOV ファイルをコピーではなく移動する コピー元からは削除される
/MOVE ファイルとディレクトリをコピーではなく移動する コピー元からは削除される
/A+:<attributes> コピーされたファイルに指定の属性を追加する 指定可能な <attributes>
  • R : 読み取り専用
  • A : アーカイブ
  • S : システム
  • H : 非表示
  • C : 圧縮
  • N : コンテンツインデックスなし
  • E : 暗号化
  • T : 一時
# ファイルを読み取り専用にして暗号化、圧縮 robocopy source destination /A+:RCE
/A-:<attributes> コピーされたファイルから指定の属性を削除する
/CREATE ディレクトリツリー、または長さ 0 のファイルのみを作成する
/FAT 8.3 FAT ファイル名のみを使用してコピー先ファイルを作成する
/256 256 文字を超えるパスのサポートをオフにする
/MON:n コピー元を監視し、n 回を超える変更があった場合に再度実行する
/MOT:m コピー元を監視し、変更があった場合は m 分後に再度実行する
/RH:hhmm-hhmm 新しいコピーを開始できる時間帯 # 10:30~12:10 の間でのみ開始可能 robocopy source destination /RH:1030-1210
/PF 実行時間をファイルごとに確認する パスごとではない
/IPG:n 低速回線で帯域幅を解放するためのパケット間ギャップ n はミリ秒
/SJ ジャンクションをそのままコピーする 接合先ではない
/SL シンボリックリンクをそのままコピーする リンク先ではない
/MT
/MT:n
コピーをマルチスレッドで実行する
  • n はスレッド数(1~128)
    省略時は8スレッド
  • /IPG および /EFSRAW とは排他
  • パフォーマンス向上のため、/LOG オプションによる出力のリダイレクトが推奨される
# 8スレッドでコピーを実行( n の指定を省略) robocopy source destination /MT # 12スレッドでコピーを実行 robocopy source destination /MT:12
/NODCOPY ディレクトリ情報をコピーしない 既定では /DCOPY:DA が実行される
/NOOFFLOAD Windows のオフロードメカニズムを使用せずにファイルをコピーする
/COMPRESS ファイル転送中にネットワーク圧縮を要求する 可能な場合のみ適用される
/SPARSE コピー中にファイルのスパース状態を保持する
ファイル調整オプション
オプション 説明 備考
/IOMAXSIZE:n[KMG] サイクル当たりの最大I/Oサイズを指定する サイズ指定は以下の書式を用いる
  • n : 数値
  • K : キロバイト
  • M : メガバイト
  • G : ギガバイト
/IORATE:n[KMG] I/Oレート(サイズ/秒)を指定する
/THRESHOLD:n[KMG] 調整を適用するファイルの最小サイズを指定する
ファイル選択オプション
オプション 説明 備考 記述例
/A アーカイブ属性が設定されているファイルのみをコピーする
/M アーカイブ属性のあるファイルのみをコピーし、リセットする
/IA:<attributes> 指定されたいずれかの属性が設定されているファイルのみを含める 指定可能な <attributes>
  • R : 読み取り専用
  • A : アーカイブ
  • S : システム
  • H : 非表示
  • C : 圧縮
  • N : コンテンツインデックスなし
  • E : 暗号化
  • T : 一時
  • O : オフライン
/XA:<attributes> 指定されたいずれかの属性が設定されているファイルを除外する
/XF <filename(s)> 指定された名前 / パス / ワイルドカードに一致するファイルを除外する
  • スペース区切りで複数指定可能
  • ワイルドカード( * および ? )が使用可能
# HTMLおよびCSSを除外してコピー robocopy source destination /XF *.html *.css
/XD <directoryname(s)> 指定された名前 / パスに一致するディレクトリを除外する
/XC 変更されたファイルを除外する タイムスタンプが同じだが、サイズが異なるファイルを指す
/XN コピー先ディレクトリよりも新しいファイルとディレクトリを除外する
/XO コピー先ディレクトリよりも古いファイルとディレクトリを除外する
/XX コピー先にだけ存在するファイルとディレクトリを除外する
/XL コピー元にだけ存在するファイルとディレクトリを除外する
/IS 同一ファイルを含める 名前、サイズ、時刻およびすべての属性が同一のファイルを指す
/IT 異常なファイルを含める 名前、サイズ、時刻が同一で、属性が異なるファイルを指す
/MAX:n 最大ファイルサイズ : 指定サイズより大きいファイルを除外する n はバイト数
/MIN:n 最小ファイルサイズ : 指定サイズより小さいファイルを除外する
/MAXAGE:n 最長ファイル有効期間 : 指定日より古いファイルを除外する n はYYYYMMDD形式
または今日から遡る日数(1900未満)
/MINAGE:n 最短ファイル有効期間 : 指定日より新しいファイルを除外する
/MAXLAD:n 最大最終アクセス日 : 指定日以降アクセスされていないファイルを除外する
/MINLAD:n 最小最終アクセス日 : 指定日以降アクセスされたファイルを除外する
/FFT FATファイル時間を想定する 2秒以内の誤差を許容する
/DST 1時間のDST時間差を補正する
/XJ シンボリックリンクとジャンクションを除外する ファイル、ディレクトリの両方
/XJD ディレクトリのシンボリックリンクとジャンクションを除外する
/XJF ファイルのシンボリックリンクを除外する
/IM 変更されたファイルを含める タイムスタンプが異なるファイルを指す
再試行オプション
オプション 説明 備考 記述例
/R:n コピー失敗時の再試行回数を指定する 既定値は 1,000,000
/W:n 再試行と再試行の間の待機時間を指定する n は秒数 : 既定値 30 (30秒)
/REG /R:n と /W:n の設定を既定値としてレジストリに保存する
/TBD 共有名が定義されるのを待機する 再試行エラー 67
/LFSM
/LFSM:n[KMG]
「空き領域不足モード(LFSM)」で動作し、コピーの一時停止と再開を有効にする
  • コピー先ボリュームの空き容量が「フロア値」を下回るごとにRobocopyが一時停止し、
    容量が回復すると再開する
  • フロア値の指定は以下の書式を用いる
    • n : 数値
    • K : キロバイト
    • M : メガバイト
    • G : ギガバイト
  • フロア値を明示的に指定しない場合、フロア値はボリュームサイズの 10% となる
# フロア値を明示的に指定せずLFSMで動作 robocopy source destination /LFSM # フロア値を365MBに指定してLFSMで動作 robocopy source destination /LFSM:365M
ログ関連オプション
オプション 説明
/L ファイル名のみを記録する
/X 選択されたファイルに加え、すべての余分なファイルを記録する
/V 詳細出力を作成し、スキップされたファイル示す
/TS 出力にコピー元ファイルのタイムスタンプを含める
/FP 出力にファイルの完全なパス名を含める
/BYTES サイズをバイトで出力する
/NS ファイルサイズを出力しない
/NC ファイルクラスを出力しない
/NFL ファイル名を出力しない
/NDL ディレクトリ名を出力しない
/NP コピーの進捗(コピー済ファイル・ディレクトリの数)を表示しない
/ETA コピーの推定完了時刻を表示する
/LOG:<filename> 指定されたファイルにログを出力する(上書き)
/LOG+:<filename> 指定されたファイルにログを出力する(追記)
/UNILOG:<filename> 指定されたファイルにログを出力する(上書き・Unicode)
/UNILOG+:<filename> 指定されたファイルにログを出力する(追記・Unicode)
/TEE コピーの状態をコンソールウィンドウとログファイルに出力する
/NJH ジョブヘッダーが無いことを示す
/NJS ジョブ概要が無いことを示す
/UNICODE 状態をUNICODEで出力する
ジョブオプション
オプション 説明 備考
/JOB:<jobname> 指定されたジョブファイルからパラメーターを取得する
/SAVE:<jobname> 指定されたジョブファイルにパラメーターを保存する
/QUIT コマンドラインの処理後に終了する パラメーターの表示のため
/NOSD コピー元ディレクトリを指定しない
/NODD コピー先ディレクトリを指定しない
/IF 後続のファイルを含める

使用例

Robocopyの有効な用途として、ディレクトリ間のミラーリングが挙げられる。
これにより不要な(コピー元に存在しない)ファイルを削除しつつ、バックアップを作成できる。
以下を共通設定とする。
コピー先をコピー元にミラーリング、再試行最大2回、再試行間隔5秒
robocopy C:\Users\Admin\Records D:\Backup /MIR /R:2 /W:5 /LOG:C:\Logs\Backup.log
すべてのファイルとサブディレクトリ(空を含む)を再起動可能モードでコピー
robocopy C:\Users\Admin\Records D:\Backup /E /ZB /LOG:C:\Logs\Backup.log
空のディレクトリを除くファイルとサブディレクトリを移動、ただし7日より前のファイルを除外
robocopy C:\Users\Admin\Records D:\Backup /S /MAXAGE:7 /MOV /LOG:C:\Logs\Backup.log
空のディレクトリを除くファイルとサブディレクトリをコピー、16スレッド使用、ファイルのデータ、属性、タイムスタンプを保持
robocopy C:\Users\Admin\Records D:\Backup /S /E /COPY:DAT /MT:16 /LOG:C:\Logs\Backup.log