パソコン上のビジネスデータのバックアップ、皆さんはどうされてますか?一日の作業が終わってパソコンの電源を落とすときに、自動でバックアップが実行されてシャットダウンされれば、意識しなくても日々バックアップできていいなぁ、アプリケーションのインストールやWindows Updateで再起動するときに意図的にバックアップをスキップ出来れば尚いいなぁと思い、最近そのような環境を構築できたので、その手順をご紹介します(但し、Windows7)。
1.バックアップソフトのインストール・設定
バックアップにはマイクロソフト社製のSyncToyを利用します。英語版しかありませんが、設定は簡単です。痒いところに手が届きませんが、最低限の機能は備わっているのと、フリーソフトよりは信頼できるような気がするので。こちらからファイルをダウンロードしてSyncToyをインストールします。
SyncToyを起動したら、Create New Folder Pairボタンをクリックして、フォルダーペアの作成を開始します。まず、バックアップ元とバックアップ先のフォルダを指定します。

次に、同期方法を指定します。3種類から選べますが、削除まで含めた片方向の同期をしたいので、Echoを選びます。

最後に、フォルダーペアに適当な名前を付けます。

フォルダーペアが作成できたら、Change options…のリンクをクリックして、除外するファイルや対象とするサブフォルダ、上書きするファイルをゴミ箱に入れるかどうかといったオプションの設定を行います。

設定が完了したら、Runボタンをクリックしてバックアップを実行します。初回のバックアップは事前に手動で行っておく必要があります。
2.スクリプトファイルの作成
バックアップを自動実行するために、スクリプトファイルを作成します。メモ帳などに下記のコードをコピー&ペーストし、コード内のパスを適宜変更して、拡張子「.ps1」で保存します。
$wscriptShell = New-Object -ComObject Wscript.Shell
$button = $wscriptShell.Popup("バックアップを実行します。", 30, "バックアップ", 1)
if ($button -ne 2) {
$result = $wscriptShell.Run("cmd /C C: & CD C:\Program Files\SyncToy 2.1 & SyncToyCmd.exe -R ""D Drive Backup""", 1, $true)
}
PowerShellのスクリプトですが、ほとんどWSHにやらせている状態です(笑)。2行目の30は、メッセージボックスが自動で閉じるまでの秒数で、ほっておいても30秒でバックアップが実行されるようになっています。4行目のRunメソッドの2番目の引数は、実行するプログラムのウィンドウ状態の指定です。一応、コマンドプロンプトが表示されるように1を指定してますが、0にすれば非表示になります。
3.自動実行の設定
Win+Rキーを押し、「gpedit.msc」と入力してOKボタンをクリックすると、ローカルグループポリシーエディターが起動します。ユーザーの構成→Windowsの設定→スクリプトと辿り、ログオフをダブルクリックします。

PowerShellスクリプトタブをクリックし、先ほど作成したスクリプトファイルを登録すると、ログオフするたびにスクリプトが実行されるようになります。

私はバックアップ先のファイルサーバーでさらに世代管理付きで毎週バックアップするようにしています。ログオフ時のバックアップファイル数を減らすために、タスクスケジューラーでアイドル時にもバックアップが実行されるようにしてもいいかも知れません。ご興味を持たれた方は、自己責任でお試しあれ。