WindowsServer robocopy

Linuxを含むUNIX環境において、お手軽バックアップツールとしてRSYNCをよく利用します。Windowsでも同様のツールがないのかなぁと探してみたらありました。その名もrobocopy。以下のサイトからダウンロード可能です。

http://www.microsoft.com/download/en/details.aspx?id=17657

■使用方法

robocopy コピー元 コピー先 [オプション]
引数  説明 
コピー元  コピー元ディレクトリ ( ドライブ:\パスまたは\\サーバ\共有\パス 
コピー先  コピー先ディレクトリ ( ドライブ:\パスまたは\\サーバ\共有\パス 


例として、次のコマンドは二つのフォルダをアクセス権も含めて完全同期を行います。ただし、コピー元ファイルがコピー先のファイルより新しい場合はコピーしません。

robocopy \\remote\public \\local\public /XO /MIR /R:2 /W:5 /COPY:DAST


■オプション一覧

次の表はRobocopyで使用できるコマンドラインオプションの一部です。

オプション 機能
/S サブディレクトリをコピーする(空のものを除く)
/E サブディレクトリをコピーする(空のものを含む)
/XC Changedに分類されたファイルをコピーしない
/XN Newerに分類されたファイルをコピーしない
/XO Olderに分類されたファイルをコピーしない
/MOVE ファイルとディレクトリを移動する。
/PURGE 転送元にないファイルとディレクトリを転送先で削除する。
/MIR /Eと/PURGEと同義。ディレクトリツリーをミラーリングする。
/NFL コピーが成功したファイル名を表示しないようにします。
ただし、エラーが発生した際は表示されます。
/NDL ディレクトリ名が表示されないようになり、
ファイルのフルパス名が表示されます。
/NP (% copy)という進捗を表示しないようにします。
/LOG:file ログを指定したファイルに出力します。
/COPY:copyflags copyflagsで指定されたファイル情報をコピーします。
copyflagsは次のフラグの組み合わせです
D – ファイルのデータ
S – セキュリティ情報(NTFSのACL)
A – ファイルの属性
O – 所有者情報
T – タイムスタンプ
U – 監査情報

セキュリティ情報、所有者情報、監査情報をコピーするには
転送先/元がNTFSである必要があります。

明示的な指定がない場合は/COPY:DATになります。
/SECが指定されれば/COPY:DATSです。

/R:n コピーに失敗した際のリトライ回数です。
0を指定するとリトライしません。
/W:n リトライの時間間隔を指定します。


その他にも多数のオプションが用意されており、必要に応じて使い分けることが可能です。

■注意点

Linuxでrsyncを使う場合、rootで実行すればまずアクセス権でエラーがおきることはありませんが、Windowsのrobocopyの場合、アクセス権エラーが発生することが多々あります。実行する際には以下のようにすればうまくいきました。(他にいい方法があれば教えてください)

1. ドメインアカウントを作る。ここではFileServer。
(ちなみにコピー元/コピー先サーバは同一ドメインです)
2. コピー元/コピー先サーバのAdministratorsグループにFileServerアカウントを追加する。
3. コピー先サーバにFileServerアカウントでドメインログインする。
4. robocopyを実行する。


その他、FSMTやRichCopyなども試してみましたが、アクセス権移行のオプションを入れていおいても移行されなかったり、FSMTはそもそも起動しなかったりと最終的な結論としてはRobocopyが一番使いやすく、バッチ化すれば自動バックアップも可能なのでオススメです。
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする