Windowsのサーバーやパソコンを更新して現状のファイルをデータ移行したいときがよくあります。
この場合は,Windows標準のバッチコマンドrobocopyでデータのバックアップや同期処理を行って移行するのが確実で便利です!!
robocopyとは?
robocopyは、Windows2008以降のOSから標準搭載されたコマンドです。
主な特徴を箇条書きにすると
- xcopyでは、できなかった、256文字を超えるパス名のファイルのコピーも可能
- オプションで比較的簡単に除外フォルダやファイルの設定ができる。(サイズや日付で除外など)
- コピーが失敗した場合は、再試行してくれる。
- アクセス権ごと移行が可能
- ミラーリングオプションで移行元と移行先フォルダを同期できる。(/MIR)
robocopy /MIRの基本的な動き
robocopyは、今までxcopyなどでは実現できなかった/MIRオプションがあります。/MIR オプションをつけて実行すると移行元フォルダと移行先フォルダが同期されます。
初回実行は、移行先フォルダには何もないのですべてのファイルをコピーしてきます。しかし、2回目以降は移行元フォルダと移行先フォルダを比較して差分が発生しているファイルのみが対象となります。
フォルダ内のファイル数が日々追加されていて、ファイル数が多い場合などは移行時間が大幅に短縮されます。しかも移行元フォルダで削除されたファイルは同様に移行先フォルダでも削除されます。
robocopyの基本構文
コマンドプロンプトでrobocopy /?を実行すると使い方が表示されます。
使用法:: ROBOCOPY コピー元 コピー先 [ファイル [ファイル]…]
[オプション]コピー元 :: コピー元ディレクトリ (ドライブ:\パスまたは \\サーバー\共有\パス)。
コピー先 :: コピー先ディレクトリ (ドライブ:\パスまたは \\サーバー\共有\パス)。
ファイル :: コピーするファイル (名前/ワイルドカード: 既定値は「*.*」です)
robocopyでよく使用するオプション
細かい設定はありますがよく使うオプションは以下の通りです。その他は一度ヘルプを見てみてください。
- /COPYALL :: ファイル情報をすべてコピーします (/COPY:DATSOU と同等)。
- /MIR :: ディレクトリ ツリーをミラー化します (/E および /PURGE と同等)。
- /LOG:ファイル :: ログ ファイルに状態を出力します (既存のログを上書きします)。
- /LOG+:ファイル :: ログ ファイルに状態を出力します (既存のログ ファイルに追加します)。
- /R:n :: 失敗したコピーに対する再試行数: 既定値は 1,000,000。
- /W:n :: 再試行と再試行の間の待機時間: 既定値は、30 秒です。
基本使用パターン
私自身がよく使うシチュエーションごとのオプション設定を記載しました。
日々増え続けていく大量のファイルがあるフォルダを移行したい時
ログや日々のインターフェースデータなどの日々フォルダにファイルが追加されていくデータを移行したい場合は、以下のコマンドオプションで実行しています。
ROBOCOPY コピー元 コピー先 /MIR /R:3 /W:5 /LOG:kekka.log
※コピー元とコピー先を同期させる。ただしコピーできないものがあった場合は、リトライを3回/5秒間隔で試みる。結果はkekka.logに出力する。
初めての実行で、コピー元とコピー先フォルダが同期しますが、。2回目以降はコピー元とコピー先の各種データのタイムスタンプ(最終更新日)とファイルサイズを確認し、差分だけをコピーして同期します。
なので最初のコピーは時間がかかりますが、2回目以降は差分のみとなるので大幅にコピー時間が短縮されます。サーバー移行などデータ移行をするときは断然robocopyが楽だと思います。
robocopy使用時の注意事項
robocopyは、問答無用でフォルダを同期してくれる強力なツールですが例えば、移行元と移行先を間違えて指定するとファイルが空になってしまうなどの衝撃的なトラブルになってしまうので注意が必要です。まずは、検証してから実行することをお勧めします。また、robocopyには/Lオプションでテストモード実行もできるようになっていいるのでこれも使ってみるといいです。
コメント