シンプルな定期バックアップ環境構築(WindowsServer)


Raidやメーカー製バックアップツールもいいのですが、 予算の都合やユーザ都合で なるべくシンプルなバックアップを組まないといけない事、ありますよね。

そんなときおすすめなのが タスクスケジューラ&バッチ処理。

バッチ部分はvbs+cmdで実装します。 Microsoftはcmdを廃止してPowerShellに移行したいようですが 現場によってはbatやvbsのが人口が多いなどの 政治的理由でまだまだPowerShellは使いにくかったりするのです。。。

今回の要件としては
・6世代分バックアップをとりたい(月曜~土曜)
・バックアップを実行するたびにバックアップ格納先を変更する
 (3台のディスクをローテーションさせる想定)
・エラーが発生したら管理者にメールを送る
を想定し実装します。

実装の流れとしては
1.bat作成
2.メール送信用vbs作成
3.bat呼び出し用vbs作成
4.タスクスケジューラ設定
となります。
順にざっくり解説します。

1.bat作成
まずはbat。詳細な説明は省略しますが フラグ管理用のファイルを作成することで ローテーション処理を実装しています。
このサンプルではBACKUPDESTDIR~に同じディスクを指定していますが ここを編集することで異なるディスクにバックアップ先を変更できます。

DailyBackup.bat

2.メール送信用vbs作成
次にメール送信用vbs作成。
DailyBackup.batから引数をセットして呼ぶようにしています。

SendMail.vbs

3.bat呼び出し用vbs作成
こちらは単にDailyBackup.batを バックグラウンドで呼ぶだけです。batを直接呼ぶと、 コマンドプロンプトが表示されてしまいます。 タスクスケジューラからbatを実行すると、結果として いきなりコマンドプロンプトが表示される形となってしまいます。 ユーザを困惑させてしまいますので、ここではvbsからbatを呼び出しています。

DailyBatStart.vbs

4.タスクスケジューラ設定
最後にタスクスケジューラ。
タスクスケジューラから 「タスクの作成」を選択し 下図のようにタスクを設定してください。



※DailyBatStart.vbsを実行させたいのですが 直接vbsを起動できないので wscriptに引数として渡す形で起動する必要があります。

以上でバックアップ環境構築完了です。

※記事の内容は保証はしておりません(執筆時期や実施環境により挙動が変わるものがある為)。
別途検証してご利用いただくことをおすすめいたします。