Robocopyでネットワーク上のファイルをミラーリング!
概要
以前Copyコマンドで実装したバッチがネットワークコピーの際にアレだったようで、Robocopyに切り替えるべきという結論に至ったため、Robocopyをちょいかじりです。
構文
Robocopy コピー元フォルダ コピー先フォルダ [ファイル] [スイッチ オプション]
コピー対象のファイルはデフォルトで全部が対象となっているため省略可能。
ミラーリング
worksフォルダからbackupフォルダへタイムスタンプを保持してミラーリング。
ログは追記形式でlogフォルダにcopy.logとして出力。と同時にコンソールにも表示。
>robocopy c:\Users\s\works c:\Users\s\backup /mir /dcopy:t /log+:c:\Users\s\log\copy.log /tee
実行の度に出力されるヘッダがうざいと思って/njhで省略してみたけど、ログ出力時に開始時間がヘッダに含まれているので結局省略できず。
アクセス権も含めコピー
/bと/copyallオプションでアクセス権のないファイルなどすべての情報をコピー。
ただし、ユーザーアカウント制御機能(UAC)による制限があるので、[管理者として実行]でコマンドプロンプトを開始する必要あり。バッチにするには管理者で実行できるようスクリプトをごにょごにょする必要があるのかな。
>robocopy c:\Users\s\works c:\Users\s\backup /mir /dcopy:t /b /copyall
モニタリング
これ面白い!
/mon:3でファイルが3回変更されるか、/mot:3で前回から3分経過のタイミングで自動コピーしてくれる。終了するにはCtrl+C。
>robocopy c:\Users\s\works c:\Users\s\backup /mir /mon:3 /mot:3
ネットワークコピー
/zオプションを付けることでネットワークコピーしてる最中に無線LANのワイヤレススイッチを切って、再度接続してもコピーが自動的に再開されました。
これが再起動可能モードの力か!
>robocopy \\ネットワークドライブのパス c:\Users\t\backup /z /mir
エラーハンドリング
リターンコードは8以上でエラー扱いらしいので細かい制御が不要であればこんな感じで。
if %errorlevel% geq 8 ( エラー時の処理 )
まとめ
コピーコマンドはCopy、Xcopy、Robocopyと3種類もありますが、Robocopyはコピーが中断されても途中から再開できるため、ネットワークコピーをする場合便利ですね!
参考
- 作者: 山近慶一
- 出版社/メーカー: 技術評論社
- 発売日: 2011/12/09
- メディア: 単行本(ソフトカバー)
- 購入: 16人 クリック: 246回
- この商品を含むブログ (18件) を見る