Windowsファイルサーバの移行とミラーリング

ファイルサーバなどのリプレイスやクライアントPCの入れ替え時には、ファイルの移行が発生しますが、 従来のXCOPYでは、失敗することが多々あります。
そこで今回はrobocopyコマンドを紹介します。

ファイルの移行コマンド(robocopy)の概要

robocopyは、もともとはリモートのファイル・サーバ同士でフォルダを同期させるために作られたコマンドです。 (ユーザー・プロファイルなどを複製するために作られた)。 robocopyはRobust File Copyの略であり、堅牢(robust)で確実なファイル・コピーという意味を持ちます。

またrobocopyはWindows Vista以降, Windows Server 2008以降のOS標準で搭載されているコマンドです。
Windows XP, Windows Server 2003の場合は、Windows Server 2003 Resource Kit Toolsを導入すれば使用することができます。
robocopyコマンドの利点
・256文字を超える長いパス名の処理
フルパスで256文字以上になると、エクスプローラでコピーするとエラーメッセージが表示されてスキップされてしまいます。 ファイルサーバーのように多数のファイルを確実に移行する必要がある場合は致命的なエラーなので一番気にしていた点でしたがrobocopyコマンドは約32000文字まで対応できるそうです。

・アクセス権限をそのままコピー可能
ファイルのコピー後にアクセス権限を事細かに設定しなおすのが面倒だなと思っていたのですが、 robocopyコマンドはオプションに/COPYALLを付けることによってアクセス権限を含めた全ての属性情報をコピーできるようです。 ファイルの場合は更新日時のタイムスタンプをそのままの状態でコピーできるようです。

・エラー時の再試行
・ネットワーク切断時のコピーの中断と再開
・ファイル・サイズを限定してのコピー
・コピー先にある余分なファイルの削除
・動作ログの記録
・コピーの進行状態の常時表示
・ジョブによる同期作業内容の定義
・コピー時の占有帯域制御
・ミラーリング(差分コピーと同じです)


robocopyコマンドの実行例

robocopy \\192.168.10.50\pub e:\pub /E /COPYALL /MIR /LOG:C:\logs\pub_log.txt /NP

※失敗する場合は、ログ取得を外すと成功することがあります。

・コピー先のファイルがコピー元より新しい場合はコピーしない。

robocopy \\192.168.10.50\プロジェクト\ d:\プロジェクト\ /E /COPY:DT /MIR /NP /R:3 /EFSRAW /XO /NFL


各オプションの意味は次の通り
/S サブディレクトリをコピーするが空のディレクトリはコピーしない
/E 空のディレクトリを含むサブディレクトリをコピーする
/MIR ミラーする。(削除も反映する)
/EFSRAW 暗号化されたすべてのファイルをEFS RAWモードでコピーする
/XO 古いファイルを除外する
/XX コピー先にだけ存在するファイルとディレクトリを除外する
/XL コピー元にだけ存在するファイルとディレクトリを除外する
/NFL ファイル名を出力しない(ファイル単位のログが不要なときに指定)
/NP コピー進捗を出力しない。大きなファイルの場合、このオプションが無いと1%刻みでログを出力してしまうので、バッチ実行時には必ずつけるべきです
/NDL フルパスを出力しない(ログファイルをコンパクトにできます)
/NFLP ファイル名を出力しない(ファイル単位のログが不要なときに指定)
/R:0 コピー失敗時の30秒後リトライはしない(デフォルトだと100万回リトライするので、アクセス権ないファイルがあったときに処理が凍ってしまいます)
/XJ ファイル、フォルダのシンボリックリンクをたどらない(Vista向け)
/COPY:DA コピー対象のデフォルト(D=データ, A=属性, T=タイムスタンプ)
/COPY:DATS セキュリティもコピーする
/COPY:DT データと日付のみコピーする(コピー先がWindows以外のNASなどの場合に使う)
/COPYALL ファイル情報をすべてコピーする(=/COPY:DATSOU)

/COPPY:フラグ説明
D データ
A 属性
T タイムスタンプ
S セキュリティ(NTFS ACL)
O 所有者情報
U 監査情報



従来のファイルコピーコマンド(xcopy)の概要

ファイルやディレクトリ・ツリーをコピーするコマンドとして、MS-DOSの時代からのコマンドに「XCOPY」コマンドがあります。
■XCOPYコマンドのデメリット
・XCOPYは、長い(255文字を越える)ファイル名を処理できず、異常終了します。
・XCOPYのタイムスタンプずれ
XCOPY /d で差分のみを更新しようと思っても コピー先のファイルのタイムスタンプが、コピー元のファイルのタイムスタンプと、秒単位でずれることがあります。 そのため、XCOPY処理を日次で実行して、本来は毎日差分だけをコピーするつもりでいても、 毎日全ファイルをコピーしてしまうことがあります。



Google+