Windows10 Robocopyの基本

Windows

Robocopy について

  • Robocopyとは、WindowsServer2008以降でOS標準搭載されたのコマンドです。そのため、それ以降のWindowsOSで利用ができます。

  • 基本的な機能は、2つのフォルダの内容を同期させ、ファイルやフォルダの内容を同じ状態に保つことができます。

  • 一般的に、ファイルサーバのバックアップや個人的なデータのバックアップ、リモートオフィス同士でのデータの同期など、システム管理のさまざまな場面で利用されてます。

  • Robocopyの名前は、そのままの名前から、ロボットコピーだと思われてしまいますが、「Robust File Copy」の略称であり、堅固robust)で確実なファイルコピーという意味を持ちます。

Robocopy 機能

  • エラー時の再試行回数の制限や待ち時間の指定ができます。

  • ネットワーク切断時のコピーの中断と再開ができます。

  • 属性やセキュリティ設定のコピーができます。

  • ファイルサイズや変更時刻などを限定してのコピーができます。

  • コピー先にある余分なファイルの削除ができます。

  • コピー先に256文字を超える長いパス名の処理ができます。

  • 動作ログの記録ができます。

  • 作業内容やオプション設定などの保存と再実行(ジョブ機能)ができます。

基本書式

robocopy コピー元 コピー先 [ファイル [ファイル]…] [オプション]

  • コピー元 : コピー元のフォルダ名 (共有フォルダも指定可能)

  • コピー先 : コピー先のフォルダ名 (共有フォルダも指定可能)
    ディレクトリがない場合は、自動で作成されます。

  • ファイル : コピーするファイル/フォルダ名
    既定値は「.」 複数指定可能 ワイルドカードの利用も可能です。

  • オプション : 後述

Robocopy 使用イメージ図

Robocopyは、コピー元(バックアップ元)からコピー先(バックアップ先)に差分なく、確実にコピーをする機能があります。オプションにもよりますが、コピー元 (バックアップ元) の状態を基準として、コピー先 (バックアップ先) にコピーすると考えて良いです。

例えば、コピー元 (バックアップ元) であるファイルが削除されたら、コピー先 (バックアップ先) のファイルも削除されことになり、コピー元 (バックアップ元) を基準として、同期が取られます。

robocopy 使用イメージ図

CドライブのAフォルダ内には、pdfxslxdocxの3つがあり、EドライブのBフォルダ内には、 pdfxslxdocxxslxがあった場合、robocopyをすれば、EドライブのBフォルダ内のxslxは削除されて、Cドライブの状態になります。

Robocopy オプション

Robocopyコマンドのパラメータ(オプション)はたくさんありますので、良く使われるものを記載します。

/MIR

バックアップ元とバックアップ先をミラーリングします。
このオプションを付与することにより、元と先でファイルが同じ状態になります。

/R:回数

ファイルコピーに失敗した場合にコピーを試行する回数です。
例えば、3とした場合、3回コピーを試行します。3回目でコピーができない場合は、スキップします。

指定しない場合、既定値の100万回が使われますので、この記載は、必ずしておきましょう。

一時的なネットワークの通信影響のために不通になることもあるために、とりあえず、回数3を指定するのがよいと思います。

/W:回数

再試行する時の待ち時間(秒)です。
例えば、3とした場合、3秒経ってからを試行します。
待ち時間は特に必要がないので、/w:0で問題ありません。

/COPY:以下の指定したアルファベット

ファイルのどの情報をコピーするかを指定するオプションになります。
コロンの後はそれぞれ以下の意味があります。

  • D : データ本体
  • A : アーカイブ情報
  • T : タイムスタンプ
  • S : セキュリティ (NTFS アクセス権) 情報
  • O : ファイルオーナー (所有者) 情報
  • U : 監査設定情報

上記すべてが含まれる場合は /COPYALL と同義になります。

通常使用する場合は、データ本体のD、アーカイブ情報のA、タイムスタンプのTの /COPY:DAT で十分です。

/XO

コピー元とコピー先のタイムスタンプを比較してコピー元のタイムスタンプが古い場合、そのファイルを除外します。

/NP

バックアップ中の進行状況を表示しません。
表示しない方がバックアップ時の負荷が下がる為、若干速くなるようです。

/NDL

バックアップ結果として、ログファイルにファイルのみが出力されるようになります。
フォルダパスがログに出力されなくなるので、ログがすっきりします。

Robocopy コマンドの戻り値

Robocopy コマンドでファイル コピーを実行した際、エラーが発生した際に戻り値が記録されますが、今回は戻り値の結果の詳細について記載します。

戻り値は、Robocopyバッチを作成後、運用する場合に、errorlevelを使用して、コピーが正常に行われているか、失敗した場合は、どのようなエラーなのかの判断ができます。

  • 戻り値 0: コピーする必要がないため、何も実施されませんでした。

  • 戻り値 1: ファイルのコピーが成功しました。
    (フォルダーのコピーは含まれません。)

  • 戻り値 2: 余分なフォルダー、ファイルが確認されました。
    (コピー元にはなく、コピー先だけにあります。)

  • 戻り値 4: 同じ名前で別の種類のファイルが存在しています。
    (コピー元はフォルダーで、コピー先はファイル、またはその逆になります。)

  • 戻り値 8: コピーに失敗しました。
    (リトライした結果を含みます、また /L では実際にコピー処理を行わないため、実質 8 以上の戻り値は出力されません。)

  • 戻り値 16: 不正な引数を指定しました。

このそれぞれの戻り値は LOG オプションでカウントされる場所は以下となります。

  • 0 と判定されたファイル、フォルダーはログ中の “スキップ” にカウントされます。
  • 1 と判定されたファイル、フォルダーはログ中の “コピー済み” にカウントされます。
  • 2 と判定されたファイル、フォルダーはログ中の “Extras” にカウントされます。
  • 4 と判定されたファイル、フォルダーはログ中の “不一致” にカウントされます。
  • 8 と判定されたファイル、フォルダーはログ中の “失敗” にカウントされます。
  • 16 と判定されたファイル、フォルダーはログ中の “失敗” にカウントされます。
タイトルとURLをコピーしました