ROBOCOPYを使ったミラーリング・バックアップ
PCのデータフォルダのバックアップが唐突に取りたくなった。
要件は以下のとおり。
- rsyncみたいな差分同期・ミラーリング機能。
- バックグラウンドプロセスで動くジョブ。
- 重くならない。
- お手軽。
いろいろと探すと、どうやら「ROBOCOPY.EXE」というヤツがいいらしい。
Windowsに標準では入っていないものの、Windows2003のリソースキットツールに入っているそうだ。
・Download details: Windows Server 2003 Resource Kit Tools
http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en
「Windows2003」用だけど、System Requirementsのところには「Windows XP」「Windows XP」が書いてある。SP2とかがないのが気になるがまぁ動くだろ、ってことでインスコ。
■実行
以下のようなオプション付きで実行。
"C:\Program Files\Windows Resource Kits\Tools\robocopy.exe" C:\data Z:\data /MIR /MOT:10 /Z /TBD /NP /NDL /LOG+:C:\data\log\robocopy\SyncBackUp.log
- /MIR ミラーリングモードで実行。コピー元とコピー先の完全な同期。
- /MOT:n プロセスが常駐し、n分後に差分同期を実行。
- /Z 途中で止めても再開可能なモードでファイルコピーを行う。パフォーマンスは下がるらしいがまぁいいや。
- /TBD 共有名が定義されるまで待機。ネットワークドライブを割り当てるまで待つって意味か。
- /NP 「○○%コピーしたよ」というメッセージを出さない。ログファイル出力するときにはコレを指定しないと、ログがグチャグチャになる。
- /NDL ログにファイルのディレクトリ名を出さない。コレをやっておくと、更新ファイルの情報のみログファイルに記録される。逆にコレがないとファイルリスト全部がログに記録されて、ファイルサイズがえらいことになる。
- /LOG+:filepath ログファイル名。追記モード。
おおっ、うまくデータ同期ができた。これでマシンが転けても大丈夫。
■バックグラウンドでひっそりと実行する
unixのcronみたいに、バックグラウンドでひっそりと実行させたい。
robocopy自体に /MOTオプションがあるので、これで決まった間隔ごとにバックアップは可能。あとは「バックグラウンド」で実行、をどうするか。
- グループ・ポリシー・エディタを起動。「コマンドを指定して実行」で、gpedit.msc を入力して実行。
- 「ローカル コンピュータ ポリシー」 - 「ユーザーの構成」 -
「Windows の設定」 - 「スクリプト(ログオン/ログオフ)」を選択し、「ログオン」のスクリプトを新規追加する。
「コンピュータの構成」のほうでもいいんだけど、それだとSYSTEMユーザーで実行されるらしいので、バックアップのコピー先が別サーバで、かつユーザー管理を厳重にしているところだとアクセス拒否されてROBOCOPYが終わってしまうことがある。 - 実行するコマンドと、それに渡す引数をそれぞれ入力し、「OK」を押す。
- ログオフ→ログオンし直す。動いた。これで勝手にバックアップしてくれる。またログも吐いているのでおかしかったらそこを見ればよい。
しかしこんな便利なツール、デフォルトで入れておいてくれないかねーと思ったらVistaでは入っているのか。
以下のサイトが大変参考になった。
・Sunvisor Lab. - Robocopyでフォルダをコピー
http://www.sunvisor.net/modules/pico/script/robocopy.htm
・ROBOCOPYでバックアップ - SSK World
http://www.sskworld.net/2009/04/robocopy.php
・Robocopy.exe - Windows Live
http://mediawithms.spaces.live.com/blog/cns!BE8B403EF3C6D5A6!167.entry
| 固定リンク
|
「Windows」カテゴリの記事
- ROBOCOPYを使ったミラーリング・バックアップ(2009.04.21)
コメント