PCのローカルにあるデータをバックアップ目的でバッファロー製のNASに同期したいと思っています。
当初BunBackupというソフトを使っていたですが、もう少し細かく設定できるものはないかと思って、調べてみたところ、Microsoft製の robocopy というコマンドラインユーティリティがあるようです。
RichCopyというのはコマンドラインベースのrobocopyをGUIで使えるようにラップしたものらしいです。
RichCopyのダウンロードは
Technet:Free Utility: RichCopy, an Advanced Alternative to RoboCopyからできます。
インストーラは英語ですが、インストール後に起動すると日本語になっています。
GUIでいろいろ設定できるのはいいんですが、タスクに登録ができません。
ということで、RichCopyのコア部分ともいえる robocopy を使ってみました。
Vista以降はOS標準で入ってるらしいのですが、2003やXP以前はリソースキットを入れないといけないようです。
リソースキットは
MS:Windows Server 2003 Resource Kit Toolsからダウンロードできます。
リソースキットを入れたら、robocopy.exe をパスの通るところに置いておくと楽です。
とりあえず同期をしたかったので下記のような感じで実行しました。
robocopy "D:\Project" "\\NAS\Backup\Project" /mir /xa:sh /R:1 /W:2
同期モードでシステムファイルを除外し、エラー時の再試行1回、再試行間隔2秒という設定です。
これでバッファロー製NASにバックアップを行ったんですが、2回目すでにバックアップ済みのファイルも上書きしてるようなのです。
調べてみると
robocopyでNASにファイルを同期する場合のオプション - 移り気プログラマーの航海日誌に解決策が。。
NTFSでない場合はタイムスタンプ精度が異なるので、/FFT オプションでタイムスタンプ精度を2秒にしてやる必要があるようです。
ということで、下記のような設定としました。
robocopy "D:\Project" "\\NAS\Backup\Project" /mir /xa:sh /R:1 /W:2 /FFT
各オプションは下記のような意味です。
/mir : ミラーリングする(/E(空フォルダコピー)と/PURGE(コピー元ないのは削除)を指定したのと同じ)
/XA:sh : システムファイル(S)と隠しファイル(H)は除外。
/R:1 : リトライは1回。
/W:2 : 再試行間隔は2秒。
/FFT : タイムスタンプ精度を2秒(NAS対策。NASじゃないならいらないかも)
これをバッチファイルに書き、タスクに登録することで自動的に走るようになります。
ただ時間測ったところBunBackupの方が若干速いようでした。
しかし、Windows7だとマルチスレッドプションもあるようなのでそこをうまく使うとより速いかもしれません。
参考:
窓の杜 - 【REVIEW】フォルダを同期させるMS純正の高機能コマンド“robocopy”をGUIで「RichCopy」
RichCopyでフォルダをバックアップ/同期させる - @IT
robocopyでフォルダをバックアップ/同期させる - @IT
Robocopyでフォルダを同期する方法 - GeekなNooblog Robocopyのオプションも載ってます。
Robocopyでフォルダをコピー | Sunvisor Lab