サイトアイコン puti se blog

windowsのバックアップやファイルサーバー移行にオススメな標準コマンド「robocopy」の使い方、オプション説明

robocopyというコマンドをご存知でしょうか?
大量のファイルのコピーやバックアップに適したWindows標準のコマンドです。
Windows管理者(特にファイルサーバー管理者)は絶対に覚えておいた方が良いコマンドですね!

 

robocopyとは?robocopyコマンドの歴史

マイクロソフトでは、robocopyを「Windows の堅牢性の高いファイル コピー」コマンドとして紹介されています。
まさにそうだと思います。
どういう時に使用出来るコマンドかというと

といった、いろんなケースに使用でき、ファイルコピーだけでなくアクセス権のコピーや所有者情報のコピーまで出来るコマンドです。
その分、難しいたくさんのオプションがrobocopyにはあるんですけどね。

 

robocopyコマンドの歴史。(余談ですけど)

robocopyの歴史としては、古くは「リソースキット」からスタートしたコマンドでした。
(昔からWindows管理者だったかたら懐かしいかもですね)
リソースキットとは、
Windows標準では無いが、Windows管理に便利な開発コマンド群をマイクロソフトがフリーで提供していて、その開発ツール群の事をリソースキットと呼んでいました。
つまり、昔はマイクロソフトのフリーツールコマンドだったのが、今では標準コマンドになったんですね。

Windows 標準コマンドでは無かった時代のOS(リソースキットで入手可能)

昔は、マニアックな人だけが知っていたコマンドでした。

Windows標準コマンドになった時代のOS

Windows Server 2008 以降はその便利さゆえに標準コマンドになったというわけです。

 

「robocopy」の使用方法。便利なオプションを説明

robocopyはオプションがたくさんあり正直難しいです、、、
なので、良く使用するオプションを紹介します。
コマンド使用例:

ROBOCOPY コピー元 コピー先 /B /COPY:DATSOU /FFT /R:0 /W:0 /FP /NP /LOG:ログファイル

ROBOCOPY コピー元 コピー先 /MIR /R:0 /W:0 /FP /NP /LOG:ログファイル

 

コピー管理者にアクセス権が無いフォルダやファイルがある場合に使用するオプションです。

例えば、ファイルサーバーの管理者権限「administrator」でrobocopyを実行すると、administratorがアクセス出来るフォルダ・ファイルのみがコピーできます。
しかし、ファイルサーバーにはadministratorsに権限のないフォルダやファイルが圧ケースがあります、、、
この場合、ファイル・フォルダをrobocopyで移行もしくはバックアップしたいのに困ってしまいますよね。

Windowsには、バックアップの時のみはアクセス権が無くてもコピーできる特殊なユーザー・グループが存在します。
一般的には「Backup Operators」グループと呼ばれるユーザーです。
/Bオプションを使用すると、「Backup Operators」グループに入っていないユーザーでも、「Backup Operators」グループユーザー同等で”アクセス権が無いけどコピーできる”オプションになります。
便利ですね!

 

アクセス権のみコピーしたいとかアクセス権以外をコピーしたいと言った時に使用するオプションです。

robocopyには”アクセス権だけコピーする”といった特殊なコピーも出来ます。
その特殊なファイル情報を選び指定しコピーするオプションが/COPYオプションです。

既定値(/COPYオプションを何も指定しない場合)は「/COPY:DAT」になります

/COPYALL はファイル情報をすべてコピーします。
つまり、/COPY:DATSOU と同等になります。

 

NTFSからFATにコピーする時に使用するオプションです。


NTFS から FAT にコピーするとき、時刻のスタンプ変更

robocopyは、基本的に

で、同じファイルか違うファイルか見極め、違うファイルだった場合コピーしていきます。(なのでrobocopyはスキップして差分コピーが出来ます)。
ここで、タイムスタンプが異なると異なるファイルと判断してしまうので、何回robocopyを実行しても同じファイルをスキップしなくなってしまい毎回フルコピーになってしまいます。

ここで、NTFSからFATにコピーする場合、FATからNTFSにコピーする場合の注意点があります。
実は、NTFSからFATにコピーする場合、ファイルシステムの仕様上の問題でファイルのタイムスタンプが正確に同じにならないのです(2秒程度の誤差あり)。
この誤差を許容し、タイムスタンプに2秒の誤差があっても同じファイルだと思うオプションが/FFTです。

 

コピーに失敗したらリトライしないで先に他のファイルをコピーさせたい時に使用するオプションです。

コピー時間を短縮したい時に使用します。
既定値は 1,000,000。

 

コピーに失敗したらリトライしないで先に他のファイルをコピーさせたい時に使用するオプションです。

コピー時間を短縮したい時に使用します。
既定値は、30 秒です。

 

/MIR 「ディレクトリ ツリーをミラー化します」

「コピー元」から「コピー先」にミラー(同期)をかけます。

  1. robocopyで コピー元からコピー先にコピー
  2. コピー元でファイルを消す
  3. robocopyで コピー元からコピー先にコピー
    (コピー先でもコピー元同様にファイルが消えます)

/E オプションとおよび /PURGE オプションを同時に使用したコピーと同等になります。
便利で手軽なオプションですね。

/E :: 空のディレクトリを含むサブディレクトリをコピーします。
/PURGE :: 既にコピー元に存在しないコピー先のファイル/ディレクトリを削除します。

 

ログ出力に関する見栄えのオプションです。

/FP :: 出力にファイルの完全なパス名を含めます。
/NP :: 進行状況なし - コピーの完了率を表示しません。
/LOG:ファイル :: ログ ファイルに状態を出力します (既存のログを上書きします)。

 

その他面白いオプション

巨大ファイルのネットワークコピー時に失敗した場合、リジューム機能が使えます

「接合ポイント」とはWindowsのハードリンクと呼ばれる「ジャンクション」リンクを意味します。
このジャンクションリンクをコピーするかどうか指定できます。
(ジャンクションリンクは、ハードリンクともいわれる特殊なショートカットリンクのことですね)

モバイルバージョンを終了