Ext JS に関しては,新しい記事は Sunvisor Lab. ExtJS 別館 にあります。そちらもよろしくお願いいたします。

Robocopyでフォルダをコピー

あるフォルダを別なフォルダにミラーリングコピーする方法としては,以前はxcopyを使うことが多かったが,この方法だと転送元から削除されてい るのに転送先に残っている不要なファイルの削除はできません。 僕自身はそういうゴミを削除するコマンドを別に作って運用していましたが,Windows Resource Tool KitにRobocopyというコマンドがあるのを見つけました(Winodws VISTAには最初からRobocopyが入っています)。これは,そのような不要ファイルを削除することもできるすぐれもので,Linuxのrsync のように便利なツールです。このRobocopyについて色々と調べてみました。

Resurce Kitをインストールするとrobocopy.exeと同じフォルダにrobocopy.docというドキュメントもインストールされます。ここには Robocopyを使う上での有益な情報が詰まっているのですが,いかんせん英文です。なんとかがんばってこれを日本語訳してみました。それがRobocopy.docの日本語版 です。ここでは,その作業の中で得られたものから特に便利そうなものを抜粋して掲載します。Robocopyに関する日本語サイトで最も詳しいページを目指します。

参考サイト

通常の使い方

usageは次の通りです。

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オプションを記述しておきます。

トラックバック


URL から "-MoIyadayo" を削除してトラックバックを送信してください。
トラックバックは承認後に表示されます。

ファイルサーバ入替に向けて

先週末から、いろいろ悩みすぎました。 解決したと同時に疲れがドドドドド。 疲れがピークなのか、カフェオレをこぼして書類が茶色(トホホ 加えて、頭痛までしてきたんですけど! 来週あたりに、ファイルサーバの入れ替えがあるので、 その前にと、ファイルコピー:時間測定とアクセス権(ACL)設定のテストを行ってました。 最初xcopyでやってたんですが、 なぜかアクセス権のコピーがうまくいかないんですよ。/oスイッチ効かないし。 /xスイッチ使うと「クライアントは要求された特権...
添付サイズ
Robocopy.docの日本語版367.5 KB