ROBOCOPYコマンドの基本構文は、次のようになる。
ROBOCOPY <コピー元> <コピー先> <ファイル名> <ファイル名...> <オプション>
ROBOCOPYコマンドは、基本的には「コピー元」と「コピー先」にフォルダのパス名を指定するだけだ(UNCパスも使用可能だ)。さらに、オプションを付加することで、高度なコピーが行える。例えば、「/S」「/E」を付加すればサブフォルダのコピーを行い、「/V」を付加するとコピー後に検証を行える。
また、ROBOCOPYコマンド独特のオプションに「/PURGE」、または「/MIR」がある。これらのオプションを使用すると、コピー元で削除されたファイルやフォルダはコピー先でも削除され、完全な同期状態を維持する。なお、「/MIR」は「/E /PURGE」と同じ意味だ。同期を行う際は通常、次のように記述する。
ROBOCOPY "C:\Documents and Settings\KojiI\My Documents" "E:\My Documents" /S /V /MIR
また、コピー元とコピー先の指定に続いて、スペースで区切ってファイル名を列挙することで、コピー元フォルダに含まれる特定のファイルだけをコピー対象に指定することもできる。ファイル名の指定にはワイルドカードの使用も可能だ。ワイルドカードを利用すると、ファイル名を列挙しなくても、特定のファイル(例えば拡張子が同じものだけ)をバックアップできる。
例えば、「C:\Documents and Settings\KojiI\My Docum ents」フォルダにある、「Mailbox.pst」「Mailbox.pub」ファイルだけをコピー対象にしたい場合は、次のように記述する。
ROBOCOPY "C:\Documents and Settings\KojiI\My Documents" Mailbox.pst Mailbox.pub "E:\My Documents" /S /E /V /PURGE
このほかにも、ROBOCOPYコマンドには多様なオプション機能が用意されている。主な引数一覧は前ページの表1のとおりだ。
オプション | 解説 |
---|---|
/S | サブフォルダもコピーする。(空白のときにはコピーしない) |
/E | サブフォルダもコピーする。(空白のときでもコピーする) |
/LEV:n | コピーするフォルダ階層のレベルを数字nで指定する |
/Z | 実行ファイルを再起動可能状態でコピーする |
/SEC | セキュリティ情報をコピーする(NTFSの場合にのみ有効) |
/SECFIX | セキュリティ情報を修復する |
/TIMFIX | タイムスタンプの情報を修復する |
/MOV | ファイルについて、コピーではなく移動を行う |
/MOVE | ファイル/フォルダについて、コピーではなく移動を行う |
/PURGE | 送り側で削除されたファイル/フォルダは、受け側でも削除する |
/MIR | 「/E /PURGE」と同じ |
/A+:[R][A][S][H] | コピーしたファイルに、指定した属性を設定する |
/A-:[R][A][S][H] | コピーしたファイルから、指定した属性を削除する |
/CREATE | フォルダツリーだけをコピーして、ファイルはコピーしない |
/FAT | 受け側のファイル名を「8.3」形式に限定する |
File Selection: /A | アーカイブ属性が設定されたファイルだけをコピーする |
/M | アーカイブ属性が設定されたファイルだけをコピーして、コピー元についてはコピー後にアーカイブ属性を削除する |
/IA:[R][A][S][H] | 指定した属性を持つファイルだけをコピーする |
/XA:[R][A][S][H] | 指定した属性を持つファイルをコピー対象から除外する |
/XF file [file]... | 「/XF」に続けて指定したファイルを、コピー対象から除外する |
/XD dirs [dirs]... | 「/XD」に続けて指定したフォルダを、コピー対象から除外する |
/XC | /XN | /XO | それぞれ、変更されたファイル、追加されたファイル、送り元の方が古いファイルをコピー対象から除外する |
/IS | 同じファイルでもコピーする |
/L | コピー対象になるファイルを表示するだけで、コピーは行わない(事前確認) |
/V | コピーしなかったファイルの名前も表示する |
/NP | コピー進行状況を表示しない |
なお、ROBOCOPYコマンドのバージョンによっては、パス名に日本語などの2バイト文字が含まれていると、コピー中のファイルの名前を画面に表示できなくなる。しかし、ファイルのコピー自体は正しく行われているので問題はない。
ミラーリング
robocopy C:\userdata \\server\userdata /MIR
ソースパスの内容ととデスティネーションパスを全く同じにしたい場合に使います。/MIR オプションは,/E(空のものも含めてサブフォルダをコピーする) と /PURGE(コピー元にないファイル・フォルダを削除する) を両方指定したのと等価です。
コピー先のファイル削除をしない場合は
robocopy C:\userdata \\server\userdata /E
のように /E のみを指定します。
エラーを無視してコピー
エクスプローラなどで,フォルダごとコピーしようとすると,長い間待たされたあげくエラーが発生して途中で止まってしまいガッカリという経験はありませんか。「とりあえず,エラーが起きないファイルだけでも全部コピーしてくれればいいのに」
robocopy C:\userdata \\server\userdata /R:0 /E
/R:0で,エラー時のリトライ回数を0にしています。/Eオプションでソースフォルダの全てをコピーします。これでソースフォルダのファイルをエラーが発生しても中断することなくコピーできます。
robocopy C:\userdata \\server\userdata /R:0 /E /NFL /NP > COPY.LOG
さらに/NPや/NFLオプションをつけるて出力をファイルにリダイレクトすると,エラーが発生したログだけが残りますので,コピーできなかったファイルを特定できます。
コピー先のいらないファイルを削除するだけ
デスティネーションフォルダにはあるがソースフォルダにないファイル。Robocopy のファイルクラスで言うとExtra。いわゆるゴミのファイルですが,そのファイルを削除するのみで,ファイルのコピーは行わないということもできます。
robocopy C:\userdata \\server\userdata /NOCOPY /PURGE
古いファイルはコピーしない
Robocopy のデフォルトの動作では,Changed, Newer, Older のクラスのファイルがコピーされます。ソースの方が古いファイルであっても,コピーされるのです。古いファイルはコピー対象から外したい場合は/XOオプションを使います。
robocopy C:\userdata \\server\userdata /MIR /XO
NASにコピーする
NAS製品の中では,タイムスタンプの精度がFATなみの2秒というものがあります。そのくせNTFSを名乗っている。そんなディスクとNTFSのディスクの間でミラーリングをした場合に,タイムスタンプの精度の違いにより,毎回コピーされてしまったり全然コピーされなかったりとうまく動かないことがあります。そんなことが起きないように,/FFT オプションを使います。
robocopy C:\userdata \\server\userdata /MIR /FFT
/FFTでは,タイムスタンプの精度が2秒であるとしてコピーをします。
コピーではなく移動する
コピーではなくフォルダ構造全体を移動したい場合は,/MOVE オプションを使います。
robocopy C:\userdata \\server\userdata /MOVE
よく似た感じの /MOV オプションもあります。こちらは,コピー元に(空っぽの)フォルダ構造が残ります。/MOVE ではフォルダも含めて元のパスにはなにもなくなります。
コマンドラインリファレンス
Robocopyを実行するには,コマンドプロンプトで次の文法を使います。
ROBOCOPY source destination [file [file]...] [options]
各引数は次の表の通りです。
引数 |
意味 |
コメント |
source |
転送元ディレクトリ |
drive:\path や \\server\share\pathYが使用できます。 |
destination |
転送先ディレクトリ |
drive:\path や \\server\share\pathYが使用できます。 |
file |
処理対象となるファイル名 |
ワイルドカード文字 (? and *)が使えます。指定されたなかった場合はデフォルトで全てのファイル (*.*)となります。 |
options |
コマンドラインオプション |
利用できるオプションは,後述します。 |
Tip |
コマンドプロンプトで簡単な使用法を見るには,コマンドラインオプションをなにも指定せずにROBOCOPYを実行してください。
次の表はRobocopyで使用できるコマンドラインオプションを定義します。
スイッチ |
機能 |
/S |
サブディレクトリもコピーする。(空のものは除く) |
/E |
サブディレクトリもコピーする。(空のものも含む) |
/LEV:n |
転送元ディレクトリツリーの上位nレベルのみをコピーする。 |
/Z |
再起動可能モード(エラー時点からコピープロセスを再開できるモード)でコピーする。 |
/B |
バックアップモード(バックアップコピーは再起動可能ではありませんが,再起動可能モードではコピーできないファイルがあります)でコピーする。 |
/ZB |
再起動可能モードでコピーを試行し,「アクセスが拒否されました」エラーが発生したら自動的にバックアップモードに切り替える。 |
/COPY:copyflags |
copyflags で指定されたファイル情報をコピーします。copyflagsは次のフラグの組み合わせです。 D - ファイルのデータ S - セキュリティ情報(NTFSの ACL) A - ファイルの属性 O - 所有者情報 T - タイムスタンプ U - 監査情報 セキュリティ情報,所有者情報,監査情報をコピーするには,転送元と転送先両方のボリュームがNTFSである必要があります。 このスイッチが指定されなかった場合のデフォルト値は/COPY:DAT です。/SECが指定されていれば /COPY:DATSです。 |
/COPYALL |
すべての情報をコピーします。/COPY:DATSOUと等価です。 |
/NOCOPY |
何もコピーしません。/PURGE スイッチと一緒に使うと便利です。 |
/SEC |
セキュリティ情報もコピーします。(転送元と転送先両方のボリュームがNTFSである必要があります)/COPY:DATSと等価です。 |
/MOV |
ファイルを移動します。(転送元ファイルをコピー後に削除するということです) |
/MOVE |
ファイルとディレクトリを移動します。(転送元ファイルとディレクトリをコピー後に削除するということです) |
/PURGE |
転送元に存在しない転送先のファイルとディレクトリを削除します。 |
/MIR |
ディレクトリツリーをミラーリングします。(/E と/PURGEの両方を指定したのと等価です) |
/A+:{R|A|S|H|N|T} |
コピーされたファイルの指定された属性をセットします。 次の属性をセットすることが出来ます。 R - 読み取り専用 S - システム N -非インデックス対象属性 A - アーカイブ H - 隠しファイル T - テンポラリファイル |
/A-:{R|A|S|H|N|T} |
コピーされたファイルの指定された属性をオフにします。 R - 読み取り専用 S - システム N -非インデックス対象属性 A - アーカイブ H - 隠しファイル T - テンポラリファイル |
/CREATE |
サイズ0のファイルをだけを含んだディレクトリツリーを作成します。(つまりファイルのデータはコピーしません) |
/FAT |
転送先のファイル名を,8.3のFATファイル名で作成します。 |
/FFT |
FATタイムスタンプ(2秒の精度)であると見なします。NTFSであると名乗っているものの,タイムスタンプに2秒の精度しかないサードパーティ製のファイルシステムをコピーするときに使います。 |
/MON:n |
転送元ディレクトリツリーの変更をモニタして,n回の変更が発生したらコピーを開始します。コピー動作間の最小時間間隔は /MOT で指定します。 |
/MOT:n |
転送元ディレクトリツリーの変更をモニタして,前回のコピーから,n分経過したらコピーを開始します。変更が発生した最小回数は /MON で指定します。 |
/RH:hhmm-hhmm |
あたらしいコピープロセスを開始しても良い時間帯を定義します。コピーを特定の時間帯に制限するのに使います。両方の値は24時間表示の時間で,0000 から 2359 の間でなければなりません。 |
/PF |
新しいコピープロセスを開始できるかどうかをより頻繁に(処理単位ではなくファイル単位で)チェックをします。実行可能時間帯の終わりにより早くコピープロセスを終わらせるときに使います。 |
/IPG:n |
ファイルデータの64K単位のブロックをコピーするたびに,nミリ秒のインターバルをはさみます。遅い回線の帯域を解放するのに役立ちます。 |
/IA:{R|A|S|H|C|N|E|T|O} |
指定した属性のファイルをコピー対象に含みます。 次の属性を指定できます。 R - 読み取り専用 A - アーカイブ S - システム H -隠しファイル C - 圧縮 N -非インデックス対象 E - 暗号化 T - テンポラリ O - オフライン |
/XA:{R|A|S|H|C|N|E|T|O} |
指定した属性のファイルをコピー対象から除外する。 次の属性を指定できます。 R - 読み取り専用 A - アーカイブ S - システム H -隠しファイル C - 圧縮 N -非インデックス対象 E - 暗号化 T - テンポラリ O - オフライン |
/A |
アーカイブ属性がセットされているファイルのみをコピーします。 |
/M |
アーカイブ属性がセットされているファイルのみをコピーし,転送元ファイルのアーカイブ属性をオフにします。 |
/XJ |
ジャンクションポイントを除外します。 |
/XF file [file] |
指定した名前(パス名,ワイルドカード)のファイルをコピー対象から除外します。 |
/XD dir [dir] |
指定した名前(パス名,ワイルドカード)のディレクトリをコピー対象から除外します。 |
/XC |
"Changed"に分類されたファイルをコピー対象から除外します。 |
/XN |
"Newer" に分類されたファイルをコピー対象から除外します。 |
/XO |
"Older" に分類されたファイルをコピー対象から除外します。 |
/XX |
"Extra" に分類されたファイルをコピー対象から除外します。 |
/XL |
"Lonely" に分類されたファイルをコピー対象から除外します。 |
/IS |
"Same" に分類されたファイルをコピー対象に含めます。 |
/IT |
"Tweaked" に分類されたファイルをコピー対象に含めます。 |
/MAX:n |
n バイトを超えるサイズのファイルをコピー対象から除外します。 |
/MIN:n |
n バイトより小さいサイズのファイルをコピー対象から除外します。 |
/MAXAGE:n |
最終更新日が,n 日以前であるか,指定された日付より古いファイルをコピー対象から除外します。n が1900未満の場合は,n は日数を表し,そうでない場合は,YYYYMMDD 形式の日付を表します。 |
/MINAGE:n |
最終更新日が,n 日以後であるか,指定された日付より新しいファイルをコピー対象から除外します。n が1900未満の場合は,n は日数を表し,そうでない場合は,YYYYMMDD 形式の日付を表します。 |
/MAXLAD:n |
アクセス日時が,n 日以前であるか,指定された日付より古いファイルをコピー対象から除外します。n が1900未満の場合は,n は日数を表し,そうでない場合は,YYYYMMDD 形式の日付を表します。 |
/MINLAD:n |
アクセス日時が,n 日以後であるか,指定された日付より新しいファイルをコピー対象から除外します。n が1900未満の場合は,n は日数を表し,そうでない場合は,YYYYMMDD 形式の日付を表します。 |
/R:n |
コピーに失敗した時にリトライする回数を指定します。(デフォルトは1,000,000回です) |
/W:n |
リトライの時間間隔を指定します。(デフォルトは30分です) |
/REG |
/R:n と /W:nで指定した値をデフォルト値としてレジストリに書き込みます。 |
/TBD |
「ネットワーク名が見つかりません」エラーが発生したときに,共有名が定義されるのを待ちます。 |
/L |
コピー(削除やタイムスタンプの変更なども)せずにファイルをリストアップします。 |
/X |
"Extra"に分類されたファイル(選択されていないファイルを含みます)をすべて表示します。 |
/V |
スキップしたファイル名も表示するようにします。 |
/TS |
転送元ファイルのタイムスタンプも表示します。 |
/FP |
フルパス名を出力します。 |
/NC |
ファイルクラスの出力を抑制します。 |
/NS |
ファイルとディレクトリの作図の表示を抑制します。 |
/NDL |
ディレクトリ名を表示しないようにします。/NDL が指定されるとファイルのフルパス名が表示されるようになります。 |
/NFL |
ファイル名を表示しないようにします。/NFLを指定しても,コピーエラーが発生したときには,ファイル名は表示されます。 |
/NJH |
ジョブヘッダを表示しないようにします。 |
/NJS |
ジョブサマリを表示しないようにします。 |
/NP |
(% copied)という進捗表示をしないようにします。 |
/ETA |
ファイルコピーが完了する推定時間を表示します。 |
/LOG:file |
ログ出力を指定したファイルにリダイレクトします。ファイルが既に存在する場合には上書きします。 |
/LOG+:file |
ログ出力を指定したファイルにリダイレクトします。ファイルが既に存在する場合には追加書き込みします。 |
/TEE |
LOG や /LOG+で指定したログファイルに加えて,コンソールにもログを表示します。. |
/JOB:job |
jobで指定されたジョブファイルからパラメータを読み込みます。 |
/SAVE:job |
jobで指定されたジョブファイルに現在のパラメータ競ってイングを書き込みます。 |
/QUIT</> |
コマンドラインの解釈をしただけで処理を終了します。ファイルはコピーされません。/QUITを /JOB と一緒に使うとジョブファイルの内容を表示することが出来ます。 |
/NOSD |
転送元ディレクトリは指定されていないことを宣言します。転送元が実行時に指定されるテンプレートジョブで使うと便利です。 |
/NODD |
転送先ディレクトリは指定されていないことを宣言します。転送先が実行時に指定されるテンプレートジョブで使うと便利です。 |
/IF |
指定された名前(またはパス,ワイルドカード)のファイルをインクルードします。ジョブファイルの中でのみ使われます。 |
/SD:path |
転送元ディレクトリを指定します。ジョブファイルの中でのみ使われます。 |
/DD:path |
転送先ディレクトリを指定します。ジョブファイルの中でのみ使われます。 |
コメントする