n-Archives.net

Robocopyの基本動作とコマンドオプション解説

目次

知っておくべきRobocopyの基本動作

Robocopyのデフォルト動作の主なポイント

Robocopy はフォルダ・ファイルをコピーするツールですが、コピー先に既に同じファイルが存在する場合はコピーをせず、必要なファイルだけをコピーするため、非常に効率よく短時間でコピーを行うことができ、とても便利です。

意外とあまり説明されていませんが、Robocopyのデフォルトの動作は、以下のようになります。主なポイントを記載します。

  • デフォルトでは、コピー元フォルダ直下のファイル(フォルダは含みません)をコピーします。サブフォルダ配下もコピーする場合、/S, /E, /MIRなどを指定する必要があります。
  • 既にコピー先にファイルが存在する場合、コピー元ファイルとコピー先ファイルを比較し、タイムスタンプとファイルサイズが同じであればコピーは行わない。
  • コピー先のほうがタイムスタンプが新しくても上書きされる。
  • ファイル属性については比較しないので、ファイル属性が更新されていてもコピーされない。
  • ファイルコピー時のクラスの分類と、コピー処理をまとめると、以下の表ようになります。(セキュリティ情報をコピーする場合の動作についてはこちらの記事をご覧ください)
ファイル・フォルダ コピー時ののクラス分類とコピー動作
クラス クラス条件 コピー動作
コピー元 コピー先 更新時刻 サイズ 属性 デフォルト
コピー動作
関連
オプション
Lonely ある ない する /XLで除外
Tweaked ある ある 一致 一致 不一致 しない /ITで含める
Same ある ある 一致 一致 一致 しない /ISで含める
Changed ある ある 一致 不一致 する /XCで除外
Newer ある ある 元>先 *2 する /XNで除外
Older ある ある 元<先 *2 する /XOで除外
Extra ない ある - *3 /XXで除外
/PURGE, /MIR
Mismatched ある*1 ある*1

*1: コピー元がファイルでコピー先がフォルダ、またはその逆
*2: 「元>先」はコピー元ファイルの方が新しい、「元<先」はコピー先ファイルの方が新しい
*3: /PURGEまたは/MIR指定時コピー先を削除

  • ファイルのコピーは、ファイルのデータ(代替データストリームも含む)、タイムスタンプ、ファイル属性がコピーされる。(アクセス権情報(NTFS ACL)、所有者情報、監査情報はコピーされません。)
  • フォルダのコピーは、フォルダの属性、および、代替データストリームがコピーされる。フォルダのタイムスタンプはコピー元を引き継がない。(空のフォルダはコピー元のタイムスタンプとなるが、それ以外のフォルダはコピー実行時のタイムスタンプになる。)
  • シンボリックリンクやジャンクションポイントは、通常のフォルダとして扱われ、配下の対象ファイル・フォルダをコピーする。(予想外のデータ量になる可能性がある)
  • コピーに失敗した場合、30秒間隔で、最大百万回リトライを行う。

 

全般ルール

  • ファイル名、パス名に空白文字を含む場合""で囲む必要があります。

 

Robocopyコマンド説明

Syntax

robocopy <コピー元フォルダ> <コピー先フォルダ> [<ファイル>[ ...]] [<オプション>]

パラメータ

コピー元フォルダ コピー元フォルダを指定します。
  • 通常のパス形式(絶対パス、相対パス。例 N:\folder\subfolder)、または、UNCパス形式(例 \\server\share\path)で指定します。
  • ファイル名、パス名に空白文字を含む場合""で囲む必要があります。
コピー先フォルダ コピー先フォルダを指定します。
  • 通常のパス形式(絶対パス、相対パス。例 N:\folder\subfolder)、または、UNCパス形式(例 \\server\share\path)で指定します。
  • ファイル名、パス名に空白文字を含む場合""で囲む必要があります。
ファイル コピーの対象とするファイル名を指定します。
  • ワイルドカード(* と ? のみ)を使うことができます。
  • 省略時の規定値は *.* (すべてのファイルを対象)とみなされます。
  • ファイル名に空白文字を含む場合""で囲む必要があります。
  • 複数のファイル名を列挙して指定できます。空白で区切ります。
  • パス(\を含む文字列)は指定できません。
  • あくまでもファイル名を指定するためのものであり、フォルダ名は制限を受けない。
オプション オプションを指定します。

 

Robocopyのオプション

 

コピーオプション

/S サブディレクトリをコピーしますが、空のディレクトリはコピーしません。

関連記事:「RoboSync設定事例:増分バックアップ(直近20回,14日以内保存)

/E 空のディレクトリを含むサブディレクトリをコピーします。

関連記事:「RoboSync設定事例:個人PCのバックアップ設定例
関連記事:「Robocopy /MIRオプションの動作と注意点

/LEV:n コピー元ディレクトリ ツリーの上位 n レベルのみをコピーします。
/Z 再起動可能モードでファイルをコピーします。
  • オーバーヘッドが大きいため再起動可能モードを必要としない場合は使用すべきでない

関連記事:「Robocopy /Zオプションの再起動可能モードとは

/B バックアップ モードでファイルをコピーします。
  • ファイル、フォルダのアクセス権限情報(ACL)を上書きします。
/ZB 再起動可能モードを使用します。アクセスが拒否された場合、バックアップ モードを使用します。
/J バッファーなし I/O を使用してコピーします (大きなファイルで推奨)。
/EFSRAW 暗号化されたすべてのファイルを EFS RAW モードでコピーします。
/COPY:コピーフラグ ファイルにコピーする情報を指定します。(既定値は /COPY:DAT)
  • コピーフラグ:
    D=データ  (代替データストリームを含む)
    A=属性
    T=タイムスタンプ
    S=セキュリティ情報=アクセス権情報(NTFS ACL)
    O=所有者情報
    U=監査情報

関連記事:「Robocopyでセキュリティ情報を正しくコピーする方法と注意点

/SEC セキュリティと共にファイルをコピーします (/COPY:DATS と同等)。

関連記事:「Robocopyでセキュリティ情報を正しくコピーする方法と注意点

/COPYALL ファイル情報をすべてコピーします (/COPY:DATSOU と同等)。

関連記事:「Robocopyでセキュリティ情報を正しくコピーする方法と注意点

/NOCOPY ファイル情報をコピーしません (/PURGE と共に使用すると便利)。
/SECFIX スキップしたファイルも含むすべてのファイルのファイルセキュリティを修正します。
  • /SECFIXを使用する場合は、/COPYALL /COPY:O /COPY:S /COPY:U /SECのいずれかを設定し、どの情報をコピーするかを指定する。

関連記事:「Robocopyでセキュリティ情報を正しくコピーする方法と注意点

/TIMFIX スキップしたファイルも含むすべてのファイルのファイル時刻を修正します。
/PURGE コピー元に存在しないコピー先のファイル・フォルダを削除します。

関連記事:「Robocopy /MIRオプションの動作と注意点

/MIR ディレクトリ ツリーをミラー化します (/E /PURGE と同等)。
  • /MIR は /E /PURGEと同等ですが、次の点のみ異なります。 コピー先にフォルダが存在する場合、/MIRはセキュリティ設定をコピーしますが、/E /PURGEはコピーしません。

関連記事:「Robocopy /MIRオプションの動作と注意点
関連記事:「Robocopyでセキュリティ情報を正しくコピーする方法と注意点
関連記事:「RoboSync設定事例:フルバックアップ3世代
関連記事:「RoboSync設定事例:個人PCのバックアップ設定例

/MOV ファイルを移動します (コピー後にコピー元から削除)。
/MOVE ファイルとディレクトリを移動します (コピー後にコピー元から削除)。
/A+:[RASHCNET] コピーされたファイルに指定の属性を追加します。
/A-:[RASHCNET] コピーされたファイルから指定の属性を削除します。
/CREATE ディレクトリ ツリーと長さ 0 のファイルのみを作成します。

関連記事:「Robocopy /CREATEオプションの目的と使い方

/FAT 8.3 FAT ファイル名のみを使用してコピー先ファイルを作成します。
/256 256 文字を超える非常に長いパスのサポートをオフにします。
/MON:n コピー元を監視し、n 回以上の変更があった場合に再度実行します。

関連記事:「Robocopy /MON /MOT を使ってフォルダ更新を監視する

/MOT:m コピー元を監視し、m 分後に変更があった場合に再度実行します。

関連記事:「Robocopy /MON /MOT を使ってフォルダ更新を監視する

/RH:hhmm-hhmm 実行時間 - 新しいコピーを開始できる時刻を設定します。
/PF 実行時間をファイルごと (パスごとではない) に確認します。
/IPG:n 低速回線で帯域幅を解放するため、1パケット(64KB)送信ごとにnミリ秒待機する。
/SL シンボリックリンクのリンク先の対象をコピーするのではなく、シンボリックリンクを作成します。
  • /SLを指定していないデフォルトの動作は、シンボリックリンクのリンク先の対象となるファイルまたはフォルダを追跡しコピーします。
  • /SLを指定した場合、シンボリックリンクは、シンボリックリンクとしてコピーされます。リンク先の対象はコピーされません。
/MT[:n] n 個のスレッドのマルチスレッド コピーを実行します(既定値 8)。 n は 1 から 128 までの値である必要があります。 このオプションは、/IPG および /EFSRAW オプションと互換性がありません。 パフォーマンスの向上のため、/LOG オプションを使用して出力をリダイレクトします。
/DCOPY:コピーフラグ ディレクトリにコピーする情報 (既定値は /DCOPY:DA)。
  • コピーフラグ:
    D= データ   (代替データストリーム)
    A= 属性   (拡張ファイル属性)
    T= タイムスタンプ
関連記事:「Robocopy: /DCOPY:DATのすすめ
/NODCOPY ディレクトリ情報をコピーしません (既定では /DCOPY:DA が実行されます)。

関連記事:「Robocopy: /DCOPY:DATのすすめ

/NOOFFLOAD Windows のオフロードをコピーするメカニズムを使用せずにファイルをコピーします。

ファイル選択オプション

/A アーカイブ属性が設定されているファイルのみをコピーします。

関連記事:「RoboSyncを使って差分・増分バックアップを設定してみる
関連記事:「
RoboSync設定事例:増分バックアップ(直近20回,14日以内保存)
/M アーカイブ属性のあるファイルのみをコピーし、リセットします。

関連記事:「RoboSyncを使って差分・増分バックアップを設定してみる
関連記事:「RoboSync設定事例:増分バックアップ(直近20回,14日以内保存)
/IA:[RASHCNETO] 指定されたいずれかの属性が設定されているファイルのみを含みます。
/XA:[RASHCNETO] 指定されたいずれかの属性が設定されているファイルを除外します。
/XF files... 指定された名前/パス/ワイルドカードに一致するファイルを除外します。
  • 複数のファイル名を列挙できます。空白で区切ります。
  • ワイルドカードが使用できますが、* と ? のみが使用可能です。
  • ファイル名だけでなくフルパス名(例 N:\folder\filename.txt)も指定可能ですが、相対パスでの指定はできないようです。
  • ファイル名、パス名に空白文字を含む場合""で囲む必要があります。
関連記事:「Robocopy /MIRオプションの動作と注意点
/XD dirs... 指定された名前/パス/ワイルドカードに一致するフォルダ(ディレクトリ)を除外します。
  • 複数のフォルダ(ディレクトリ)名を列挙できます。空白で区切ります。
  • ワイルドカードが使用できますが、* と ? のみが使用可能です。
  • フォルダ名だけでなくフルパス名(例 N:\folder\subfolder)も指定可能ですが、相対パスでの指定はできないようです。
  • ファイル名、パス名に空白文字を含む場合""で囲む必要があります。
関連記事:「Robocopy /MIRオプションの動作と注意点
/XC 変更された(Changed)ファイルを除外します。
/XN 新しい(Newer)ファイルを除外します。
/XO 古い(Older)ファイルを除外します。
/XX コピー先にだけ存在するファイルとディレクトリ(eXtra)を除外します。
/XL コピー元にだけ存在するファイルとディレクトリ(Lonely)を除外します。
/IS タイムスタンプとファイルサイズが同一なファイル(Same)を含みます。
/IT ファイル属性だけが異なるファイル(Tweaked)を含めます。
/MAX:n 最大ファイル サイズ - n バイトより大きいファイルを除外します。

関連記事:「Robocopy /Zオプションの再起動可能モードとは

/MIN:n 最小ファイル サイズ - n バイトより小さいファイルを除外します。

関連記事:「Robocopy /Zオプションの再起動可能モードとは

/MAXAGE:n 最長ファイル有効期間 - n 日より古いファイルを除外します。
  • n < 1900の場合、n = n日、それ以外は、n = YYYYMMDDの日付です
/MINAGE:n 最短ファイル有効期間 - n 日より新しいファイルを除外します。
  • n < 1900の場合、n = n日、それ以外は、n = YYYYMMDDの日付です
/MAXLAD:n 最大最終アクセス日 - n で指定する値以後に使用していないファイルを除外します。
  • n < 1900の場合、n = n日、それ以外は、n = YYYYMMDDの日付です
/MINLAD:n 最小最終アクセス日 - n で指定する値以後に使用されたファイルを除外します。
  • n < 1900の場合、n = n日、それ以外は、n = YYYYMMDDの日付です
/XJ ジャンクションポイントとシンボリックリンクを除外します。 (デフォルト動作では含まれます)
  • /XJを指定しないデフォルト動作は、ジャンクションポイント(ボリュームマウントポイント)とシンボリックリンクは通常のディレクトリとしてその配下の対象をコピーする。そのため、予想以上のデータ量になる可能性がある。
  • /XJを指定することで。ジャンクションポイントとシンボリックリンク配下をスキップする。
/FFT FAT ファイル時間 (2 秒の粒度) を仮定します。
/DST 1 時間の DST 時間差を補正します。
/XJD ディレクトリのジャンクションポイントとシンボリックリンクを除外します。
/XJF ファイルのシンボリックリンクを除外します。
/IM Modifiedクラスを含めます

関連記事:「Robocopyでセキュリティ情報を正しくコピーする方法と注意点

再試行オプション

/R:n 失敗したコピーに対する再試行数: 既定値は 1,000,000。
/W:n 再試行と再試行の間の待機時間: 既定値は、30 秒です。
/REG 既定の設定としてレジストリに /R:n と /W:n を保存します。
  • レジストリ保存先は、HKCU\Software\Microsoft\ResKit\Robocopy
/TBD 共有名が定義されるのを待ちます (再試行エラー 67)。

ログオプション

/L 処理内容の表示のみを行いコピー先フォルダに変更を加えません。コピー、削除、タイムスタンプの追加などを行いません。

関連記事:「RoboSync TIPS: /Lオプションをつけて実行結果をプレビューする

/X 選択されたファイルのみではなく、余分なファイルをすべて報告します。
/V スキップされたファイルの情報も表示します。
/TS コピー元ファイルのタイムスタンプを表示します。
/FP ファイルの完全なパス名を表示します。
/BYTES ファイルサイズをバイトで表示します。
/NS ファイルサイズをログに表示しません。
/NC ファイルクラスをログに表示しません。
/NFL ファイル名をログに表示しません。
/NDL ディレクトリ名をログに表示しません。
/NP コピーの完了率を表示しません。
/ETA コピーするファイルの推定完了時刻を表示します。
/LOG:ファイル ログファイルに出力します (既存のログファイルを上書きします)。
  • ログファイルの保存先のフォルダは存在している必要があります。
  • ファイル名、パス名に空白文字を含む場合""で囲む必要があります。

関連記事:「Robocopyのログ出力の文字コードについて調べてみた

/LOG+:ファイル ログファイルに出力します (既存のログファイルに追加します)。
  • ログファイルの保存先のフォルダは存在している必要があります。
  • ファイル名、パス名に空白文字を含む場合""で囲む必要があります。

関連記事:「Robocopyのログ出力の文字コードについて調べてみた

/UNILOG:ファイル ログファイルに UNICODE で出力します (既存のログファイルを上書きします)。
  • ログファイルの保存先のフォルダは存在している必要があります。
  • ファイル名、パス名に空白文字を含む場合""で囲む必要があります。

関連記事:「Robocopyのログ出力の文字コードについて調べてみた

関連記事:「Robocopyを英語表示にしてログ表示の桁ずれをなくす

/UNILOG+:ファイル ログファイルに UNICODE で出力します (既存のログファイルに追加します)。
  • ログファイルの保存先のフォルダは存在している必要があります。
  • ファイル名、パス名に空白文字を含む場合""で囲む必要があります。
  • このオプションはUNICODEを出力しないので使い物になりません(個人調べ)

関連記事:「Robocopyのログ出力の文字コードについて調べてみた

/TEE ログファイル出力時、コンソールウィンドウにも出力します。
関連記事:「Robocopyを英語表示にしてログ表示の桁ずれをなくす
/NJH ジョブヘッダーを表示しません。
/NJS ジョブサマリを表示しません。
/UNICODE 状態を UNICODE で出力します。
  • このオプションは出力が異常なため使い物になりません(個人調べ)

関連記事:「Robocopyのログ出力の文字コードについて調べてみた

ジョブオプション

/JOB:ジョブ名 ジョブ名で指定されたジョブファイルからパラメーターを取得します。
/SAVE:ジョブ名 ジョブ名で指定されたジョブファイルにパラメーターを保存します。
/QUIT コマンドラインパラメータの解釈のみ行います。パラメータ表示後終了します。

関連記事:「RoboSync TIPS: /Lオプションをつけて実行結果をプレビューする

/NOSD コピー元フォルダを指定しません。
/NODD コピー先フォルダを指定しません。
/IF files... コピーの対象とするファイル名を指定します
  • ファイル名の指定方法は、コマンドパラメータの「ファイル」と同じ。
  • /IFはジョブファイルで使用することを想定しているが、通常のコマンドでも使用できる。

 

Robocopyの戻り値

戻り値一覧(Microsoftドキュメントより)
戻り値 説明
0 コピーは行われませんでした。処理は正常に終了ました。ミスマッチ(Mismatched)も見つかりませんでした。全てのファイルはコピー先に存在しています。
1 ファイルのコピーが行われました。
2 コピー先にのみ存在するファイルが見つかりました。コピーされたファイルはありませんでした。
3 ファイルのコピーが行われました。コピー先にのみ存在するファイルが見つかりました。処理は正常に終了しました。
5 ファイルのコピーが行われました。ミスマッチ(Mismatched)が見つかりました。処理は正常に終了しました。
6 コピー先にのみ存在するファイルが見つかりました。ミスマッチ(Mismatched)が見つかりました。コピーされたファイルはありませんでした。処理は正常に終了しました。全てのファイルはコピー先に存在しています。
7 ファイルのコピーが行われました。ミスマッチ(Mismatched)が見つかりました。コピー先にのみ存在するファイルが見つかりました。
8 コピーできなかったファイルがあります。
8以上 何らかの異常が発生しました。

戻り値の算出方法ですが、各ファイルの処理結果が下表の結果種別ごとにカウントされ、該当するものがあった結果種別のビット値が合計され、戻り値として算出されます。

結果種別(ビット値)
結果種別
(ビット値)
説明
0 コピーする必要がないため、何も実施しなかった
ログの「スキップ(Skipped)」としてカウント
1 ファイルのコピーが成功した (フォルダーのコピーは含まれません)
ログの「コピー済み(Copied)」としてカウント
2 コピー先にのみ存在するファイル/フォルダが確認された
ログの「Extras」としてカウント
4 同じ名前で別の種類のファイルが存在した(Mismatched)
ログの「不一致(Mismatch)」としてカウント
8 コピーに失敗した
ログの「失敗(FAILED)」としてカウント
16 致命的エラー。全く処理できなかったなど。

戻り値の参照方法は、robocopy実行後に、以下のようなスクリプトで判定可能です。

if %errorlevel% == 0 echo no error

 

ファイル属性

/A+, /A-, /IA, /XA オプションで指定するファイル属性は以下の通り。

属性名 意味
R 読み取りのみ属性 (Read only)
A アーカイブ属性 (Archive)
S システム属性 (System)
H 隠し属性 (Hidden)
C 圧縮属性 (Compressed)
N インデックス抑止属性 (Not content indexed)
E 暗号化属性 (Encrypted)
T 一時ファイル属性 (Temporary)
O オフライン属性 (Offline)

参考リンク

 

 

※ 本稿における注意:「ディレクトリ」、と、「フォルダ」の表記がごっちゃになってしまった。robocopyの歴史的経緯からするとディレクトリに統一すべきだったかもしれないが、なるべくフォルダを使うようにした。どちらも同じ意味として使ってます。

 



【関連記事・関連コンテンツ】

 

コメントをお送りください
お名前:
コメント:
コメントの公開: