参考
robocopyでフォルダをバックアップ/同期させる
ROBOCOPY source destination [file [file]...] [options]
引数 | 意味 | コメント |
source | 転送元ディレクトリ | drive:\path や \\server\share\pathYが使用できます。 |
destination | 転送先ディレクトリ | drive:\path や \\server\share\pathYが使用できます。 |
file | 処理対象となるファイル名 | ワイルドカード文字 (? and *)が使えます。指定されたなかった場合はデフォルトで全てのファイル (*.*)となります。 |
options | コマンドラインオプション | 利用できるオプションは、後述します。 |
転送元から転送先にファイルをコピーします。fileを指定することで転送元のファイルから特定のものだけをコピーするように指定することもできます。
robocopy C:\userdata \\server\userdata /MIR
上記の例では,C:\userdataの内容を \\serverというサーバーにあるuserdataフォルダにミラーリングコピーします。/MIRはミラーリングするときに使うオプションで,サブ フォルダもコピーすることと,転送元にない不要ファイルを転送先から削除することを指定します。
オプションスイッチ
オプションスイッチの意味は次の通り。これは
robocopy /?
で表示されるヘルプを日本語化したもの。(VISTAのrobocopyはこのヘルプも日本語化されていますが,それとは若干表現が違うと思います。)
オプションスイッチの実際の利用例はこちらをご覧ください。
コピーオプション
/S :: 空でないサブフォルダをコピーする /E :: 空のものも含めてサブフォルダをコピーする /LEV:n :: ソースフォルダツリーの中の上位nレベルのみをコピーする /Z :: 再開可能(restartable)モードでファイルをコピーする /B :: バックアップモードでファイルをコピーする /ZB :: 可能なら再開可能モードで不可ならバックアップモードを使う /COPY:copyflag[s] :: copyflagで指定されたファイル情報をコピーする(デフォルトは /COPY:DAT) D : データ A : 属性 T : タイムスタンプ S : セキュリティ情報(NTFSのACL) O=所有者情報 U=ファイル監査情報 /SEC :: セキュリティもコピーする (/COPY:DATSと同じ) /COPYALL :: すべてのファイル情報をコピーする(/COPY:DATSOUと同じ) /NOCOPY :: ファイル情報をコピーしない (/PURGEと一緒に使える) /PURGE :: コピー元にないファイル・フォルダを削除する /MIR :: ミラーリングコピーする (/Eと/PURGEを指定したのと同じ) /MOV :: ファイルを移動する (コピー後にコピー元から削除する) /MOVE :: ファイルとフォルダを移動する(コピー後にコピー元から削除する) /A+:[RASHNT] :: コピーされたファイルに与えられた属性を加える /A-:[RASHNT] :: コピーされたファイルから与えられた属性を削除する R : Read only S : System N : Not content indexed A : Archive H : Hidden T : Temporary /CREATE :: フォルダツリーと0バイトのファイルを作るのみ (データはコピーされない) /FAT :: コピー先ファイルを8.3形式のファイル名で作成する /FFT :: FATタイムスタンプ(精度2秒)であると見なす /256 :: 非常に長いパス(256文字以上)のサポートをオフにする /MON:n :: コピー元を監視,n回以上の変更があったら再実行する /MOT:m :: コピー元を監視,m分後に変更があったら再実行する /RH:hhmm-hhmm :: コピー開始できる時間帯を指定します /PF :: 処理単位ではなくファイル単位で実行時間帯のチェックをする /IPG:n :: 遅い回線の帯域を確保するためパケット間にnミリ秒のギャップを挿入する
ファイル選択オプション
/A :: Archiveビットがセットされているファイルのみをコピーする /M :: Archiveビットがセットされているファイルのみをコピーし ビットをリセットします。 /IA:[RASHCNETO] :: 指定された属性がセットされているファイルのみを含む /XA:[RASHCNETO] :: 指定された属性がセットされているファイルを除外する /XF file [file]... :: 指定されたファイル名(パス,ワイルドカード)と一致するファイルを除外する /XD dirs [dirs]... :: 指定されたフォルダ名(パス)と一致するフォルダを除外する 次のファイルの種類についてはファイルクラスを参照。 /XC :: Changedファイルを除外する /XN :: Newerファイルを除外する /XO :: Olderファイルを除外する /XX :: Extraファイルとフォルダを除外する /XL :: Lonelyファイルとフォルダを除外する /IS :: Sameファイルを含む /IT :: Tweakedファイルを含む /MAX:n :: nバイトより大きいファイルを除外する /MIN:n :: nバイトより小さいファイルを除外する /MAXAGE:n :: 指定日よりも古いファイルを除外する /MINAGE:n :: 指定日よりも新しいファイルを除外する /MAXLAD:n :: 指定日以降に使われていないファイルを除外する /MINLAD:n :: 指定日以降に使われているファイルを除外する nの指定は,nが1900以下の時はnは現在からさかのぼる日数。nがYYYYMMDD形式ならその日付 /XJ :: 境界値を含まない (デフォルトでは境界値を含む)
リトライオプション
/R:n :: コピーに失敗したときにリトライする回数。デフォルトは1000000 /W:n :: リトライの間にウェイとする秒数。デフォルトは30秒 /REG :: /R:n と /W:n オプションをレジストリに初期値として保存する /TBD :: wait for sharenames To Be Defined (retry error 67).
ログオプション
/L :: ファイルのリストを表示するのみ。ファイルのコピーなどはしない /X :: report all eXtra files, not just those selected. /V :: produce Verbose output, showing skipped files. /TS :: ソースファイルのタイムスタンプを出力に含む /FP :: ファイルのフルパス名を出力に含む /NS :: ファイルサイズをログに出力しない /NC :: ファイルクラス(New File, Newer, Olderなど)をログに出力しない /NFL :: ファイル名をログに出力しない /NDL :: フォルダ名をログに出力しない /NP :: 進捗を表示しない(%コピーという表示をしない) ログファイルに記録するときはこれを指定した方がよい /ETA :: コピーに要する推定時間を表示する /LOG:file :: ログファイルに出力する(存在するファイルには上書き) /LOG+:file :: ログファイルに出力する(存在するファイルには追加) /TEE :: ログファイルと同じようにコンソールにも出力する /NJH :: ジョブヘッダを出力しない /NJS :: ジョブサマリを出力しない
ジョブオプション
/JOB:jobname :: jobnameで指定されたファイルからパラメータを得る /SAVE:jobname :: jobnameで指定されたファイルにパラメータを保存する /QUIT :: コマンドラインの解析をした後に終了する(パラメータを表示する) /JOBと一緒に使うとジョブファイルの内容を表示する /NOSD :: コピー元が指定されないと断言します。 コピー元が実行時で提供されるテンプレートジョブに役立つ。 /NODD :: コピー先が指定されないと断言します。 コピー先が実行時で提供されるテンプレートジョブに役立つ。 /IF :: 指定された名前のファイルをインクルードする。ジョブファイルでのみ使う
ファイルクラス
Robocopyでは,転送元と転送先のフォルダでのファイルの状態によって,対象ファイルを分類して処理します。次の表をご覧ください。
クラス | 説明 |
Lonely | 転送元には存在するが転送先に存在しないファイル |
Same | 転送元と転送先両方に存在し,タイムスタンプもサイズも属性も同じファイル |
Tweaked | 転送元と転送先両方に存在し,タイムスタンプもサイズも同じだが,属性だけが異なるファイル |
Changed | 転送元と転送先両方に存在し,タイムスタンプは同じだが,サイズ異なるファイル |
Newer | 転送元と転送先両方に存在するが,転送元のタイムスタンプの方が新しいファイル |
Older | 転送元と転送先両方に存在するが,転送元のタイムスタンプの方が古いファイル |
Extra | 転送元に存在しないのに転送先に存在するファイル |
Mismatched | 転送元のファイルと同名のディレクトリが転送先にある(あるいはその逆) |
デフォルトではChanged, Newer, Olderがコピーされます。ファイルクラス毎にコピーするかどうかを変更するのに/XC /XN /XO /XX /XL /IS /ITなどのオプションを使用します。Extraファイルを転送先フォルダから削除するには,/PURGEか/MIRオプションを指定します。
モニタリング
/MON:nと/MOT:mスイッチを使用して、転送元のディレクトリツリーの変化をモニタして,変化が起こるたびにファイルをコピーすることがで きます。/MON:nスイッチは,n回以上の変更があったらコピーを開始することを指定します。/MOT:mスイッチは前回のコピーからm分以上経過した らコピーを開始することを指定します。これらのスイッチのうちの1つだけ指定した場合は,もう一方には1の値を指定したことになります。これらが指定され ていたら,Robocopyは終了しないで常駐プログラムかサービスのように監視を続けます。こうしてRobocopyでモニタリングしていると,転送元 のファイルへの変更結果をほぼリアルタイムで転送先へも反映させることができます。
robocopy C:\userdata \\server\userdatta /MIR /MON:5 /MOT:5
このように指定するとC:\userdataに5回以上の変更が加えられて,前回のコピーから5分以上たっていたらコピー作業が始まります。
これらと一緒に/RHオプションが指定されると,実行可能な時間帯も設定できます。
robocopy C:\userdata \\server\userdatta /MIR /MON:5 /MOT:5 /PH:2200-0600
こんな風にするとコピーが開始する時間帯は夜の10時から朝の6時までになり,それ以外の時間帯はスリープしつづけます。このRHコマンドは作業の開始時間を指定するためにも使えます。
robocopy C:\userdata \\server\userdatta /MIR /PH:1900-2000
この場合だと19時まで待ってコピーを始め,コピーが終了したらrobocopyは終了します。
ジョブファイル
Robocopyの機能は豊富ですしコマンドラインオプションもたくさんあります。フルに機能を使おうとするとコマンドラインが長~くなってしまいます。そういうときにはジョブファイルというのが使えるようになっています。一度次のコマンドを実行してみてください。
robocopy /SAVE:test /QUIT
するとカレントディレクトリにtest.RCJというファイルができると思います。これがジョブファイルです。ジョブファイルはコマンドラインのオ プションを記録したものです。各行にオプションを指定します。二つのコロン以降はコメントになります。複雑なコマンドラインになるような処理はジョブファ イルを記録しておくと便利です。利用するときには次のようにします。
robocopy /JOB:test
さらに便利なのはジョブファイルは複数使用できるという点です。ただし転送元と転送先は1回しか指定できません。転送元や転送先を指定しないジョブファイルには,/NOSD /NODDオプションを記述しておきます。
トラックバック
ファイルサーバ入替に向けて
2011/02/14(月) 18:35にド壺から
先週末から、いろいろ悩みすぎました。 解決したと同時に疲れがドドドドド。 疲れがピークなのか、カフェオレをこぼして書類が茶色(トホホ 加えて、頭痛までしてきたんですけど! 来週あたりに、ファイルサーバの入れ替えがあるので、 その前にと、ファイルコピー:時間測定とアクセス権(ACL)設定のテストを行ってました。 最初xcopyでやってたんですが、 なぜかアクセス権のコピーがうまくいかないんですよ。/oスイッチ効かないし。 /xスイッチ使うと「クライアントは要求された特権...
添付 | サイズ |
---|---|
Robocopy.docの日本語版 | 367.5 KB |
Robocopy よく使うオプション
Robocopy のオプションはめちゃくちゃたくさんあります。ここでは,実際に場面でのその組み合わせ例を示します。ミラーリング
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 ではフォルダも含めて元のパスにはなにもなくなります。
0 件のコメント:
コメントを投稿