Windowsの特定フォルダのバックアップを自動化

バックアップってほとんどの場合、XCOPYでファイルのバックアップかNTバックアップで行っているのではないでしょうか?
少し変わった方法でやってみます。

用意するものはWindows XpのPowerToysにあるSyncToy

SyncToyの詳細はこちらで解説されています。

とにかくXCOPYより格段に使い勝手はよい。
英語版しか提供されていないのですが、GUIだし設定項目も少ない。
設定はコピー元とコピー先、コピー方法をしていするだけ。
詳しくは上の解説リンクを参照。

タスクを利用する事で自動的にバックアップも可能ですが、よくPCを使用している日中にバックアップを走らせたりするのも嫌だし、
ログオン時にバックアップされるのも嫌だったので、簡単なBATを作成しログオフスクリプトを組み合わせてシャットダウン時に
自動的にバックアップしてくれるようにしてみました。
ネットワーク上に存在するサーバに対してバックアップデータを保存しているのですが、社外等でログオフ、シャットダウンする時に
バックアップ処理が走るのも嫌なので、バッチ内で接続先サーバの生死をチェックし、生きていればバックアップをするようにした。


BATなんて組んだ経験少ないので、スマートな方法じゃないけど

  • ログオフ時の実行BAT

ping "サーバアドレス" -n 1 | findstr /I Reply >nul
if errorlevel==1 goto end
cscript /b C:\WINDOWS\system32\GroupPolicy\User\Scripts\Logoff\sync.vbs
:end

pingをサーバに1回打って、帰ってきた応答結果の中にReplyがなければエラーなのでそのまま終了
Replyがあればスクリプトを実行させる。スクリプトを別に呼び出すのはBATから呼び出すと
バックアップ処理が終わらないうちにOSが落ちてしまったから。

Set ws = CreateObject("Wscript.Shell")
ws.run "C:\SyncToy\synctoy -R""mydocumentsback""",,true