2009/06/01(Mon)True Imageでデイリーシステムバックアップを取る方法

2009/06/01 16:13 Software::Windows
Acronis True Image 11 HomeというWindows用のシステムバックアップソフトを愛用している。
以前は、OSの入れ替えやトラブルシュートのときのために使っていたが、つい最近は、HDDの空き容量にも余裕ができたので、システム全体をデイリーバックアップを何日分か取っておきたいなという風に考えるようになった。
その時の設定例。


方針

毎日毎日フルバックアップを取っていれば、ほとんど何も考えなくて良いのだが、それだと概算でシステムHDDの何倍もの容量がバックアップに必要なため、日曜日のみフルバックアップで、月~土は日曜日からのインクリメンタルバックアップを行う。

私は、CドライブにOSとプログラム関係を集約し、マイドキュメントやデスクトップのたぐいは全て別ドライブに格納する構成にしているので、Cドライブの使用量はプログラムを詰め込んでいても40GB程度だが、True Imageの最高圧縮イメージのフルバックアップで約26GB、インクリメンタル分は約1GBである。
つまり、土曜日の段階だと、26GB + 1GB x 7 = 33GBほどのバックアップが存在することになるが、フルバックアップを毎日取っている場合に比べて遙かに容量を節約していることは明らかであろう。

電源周り

で、どうやってバックアップを開始するかであるが、私の環境ではLAN内にサーバーが常時オンラインなので、電源を入れることに関しては、このサーバーにWake on LANパケットを送出させることで解決した。Linux用のwakeonlanコマンドはこちらから入手できる。
$ wget http://gsd.di.uminho.pt/jpo/software/wakeonlan/downloads/wakeonlan-0.41-0.fdr.1.noarch.rpm
$ sudo rpm -ivh wakeonlan-0.41-0.fdr.1.noarch.rpm
$ crontab -e
↓↓↓↓以下を記述↓↓↓↓
# min hour day month wday cmd
1 6 * * * wakeonlan 00:18:F3:XX:XX:XX
このように設定。毎日6時1分に電源を入れることになる。
もしこのように常時起動してWoLできる環境がないのであれば、BIOSに毎日の起動時刻を設定しておけば良い。自動起動のための具体的なBIOS設定例などを参考。


電源を切る方の設定は、jshutdownを使わせて頂いた。コマンドベースで電源操作を行えることと、OS標準のshutdown.exeに比べて休止状態やスタンバイへの移行が可能であるので、非常に便利。
これをどこかのフォルダに導入しておく。呼び出し側のスクリプトは後述。

実行時間

開始時刻を6時としたのは訳があって、
  • 平日は7時,8時起きが多く、起きてすぐに天気やニュースなどを確認する
  • 割と夜型なので、週末は4時5時まで起きていることもある
  • 休日は昼間もずっとPCを使っている
というわけで、一番使わない時間帯が朝の6時というわけである。
朝に終了する形式だと、もしハングしていても起きてから気づけるし、寝るときに五月蠅いファンの音を聞くこともないし……という理由もある。

なお、使わない時間帯が曜日毎にバラバラなら、平日分をバラしてスケジューリングするという手もある。

バックアップロケーションの作成

さて、True Image側の設定。
ファイル名を自動的に付け、世代管理を行うために、指定フォルダ以下をバックアップロケーションという形にする。

メインメニューから、管理ツール→Acronis バックアップロケーションとアーカイブの管理と進んで、「Acronis バックアップロケーションの作成」を選ぶ。

次へを押し、バックアップディスクにフォルダを作ってそこを選択する。
確かTrue Image 10では、ドライブのルートを指定するとバグった気がするので、一階層フォルダを掘ることをオススメ。
バックアップルールを以下のように設定。
重要なのは最大保存期間なので、
Acronis バックアップロケーションのサイズ
100GB
バックアップの最大数(回数)
未指定
最大保存期間(日)
7
最後に実行ボタンを押して完成。

タスク作成

次に、True Imageにタスクを作成する。

メインメニューから、管理ツール→タスクの管理と進んで、「新しいタスクの作成」を選ぶ。
まずは日曜日のフルバックアップの設定。以下のように設定。
タスクの種類の選択
バックアップ
バックアップ対象の選択
コンピュータのバックアップ
バックアップするデータの選択
ディスクまたはパーティション
パーティションの選択
Cドライブのパーティションのみチェック
「全セクタのイメージを作成する」はオフ
バックアップから除外するファイル
「次の条件に一致するファイルとフォルダ」にチェックを入れ、pagefile.sys(仮想メモリ)とhiberfil.sys(休止状態ファイル)を追加する。
これらをバックアップして復元したところで役に立つ可能性はほとんど無い上、ファイルサイズが大きい。
バックアップアーカイブの保存先
「Acronis バックアップロケーション」を開き、先ほど作った場所を指定する。
ここでマイコンピュータから選んでしまうと意味がないので注意。
ファイル名の欄が「この領域は、自動的にファイル名が設定されます。」となっていることを確認。
バックアップポリシー
完全バックアップの作成
パスワード保護
設定しない
バックアップオプションの選択
オプションを手動で設定する
バックアップの作成オプション
「前後に実行するコマンド」というところで、「コマンドを手動で設定する」にチェックを入れ、「処理に実行するコマンド」に、以下で作るバッチファイルへのパスを入れる。例えば、Y:\journal.bat。
「圧縮レベル」は「最高」に設定。
「バックアップの優先度」は「低」に設定。もしバックアップの時間帯にPCを使いたいときに、あまり邪魔にならないようにするためであるが、実のところバックアップ中にPCを使うのは重くて辛い^^;
「通知 - WinPopup」では、LAN内のコンピュータを指定しておくと、その時間PCがオンラインならMessengerサービスを経由して通知が出る。MessengerサービスはXP SP2からデフォルトでオフになっているので、@ITのこの記事を参考にして、自動実行にしておく必要がある。(2台のコンピュータ両方とも)
「追加の設定」内の「作成完了後に、作成されたバックアップアーカイブをチェックする」は意外と時間がかかるのと、バックアップ後に実行するコマンドはアーカイブチェックの前に実行され、そこで電源を切る設定を書いているため、オフにしている。
アーカイブのコメントの入力
例:「日常のバックアップ + スタンバイ+ジャーナル整理(完全バックアップ)」
タスクの実行スケジュール
週単位
「コンピュータがアイドル状態になるまで待機する」はオフ
週単位で実行するタスク
「開始時刻」は「6時5分」。
上記のWake on Lan設定で6時1分に電源が入り、スタンバイからの復帰は10秒もかからないが、念のため余裕を持って。
「間隔」を「1週間に1回」、曜日を「日曜日」のみチェックする。
ログイン情報
常にログインしっぱなしなので問題ないが、一応Administrators権限のあるユーザーを指定しておく。
これで完成。

journal.bat

先の設定で、バックアップ後に実行するコマンドとしてjournal.batというのを指定したが、そのファイルの内容は以下。
このファイルの作り方は、【バックアップ】 Acronis True Image part36を参考にした。
私はY:\journal.batの位置にバッチファイルを置き、Y:\Journal以下にバックアップファイルを作成しているが、適宜自分の環境に読み替えてほしい。
@echo off
set log="Y:\TI11_task.log"
cd /d Y:\Journal
ping localhost -n 60 > nul
echo [ %DATE% %TIME% ]>> %log%
echo ------------------>> %log%
dir /b *.tib >> %log%
del /Q *D2.TIB >> %log%
del /Q *D3.TIB >> %log%
del /Q *D4.TIB >> %log%
del /Q *D5.TIB >> %log%
del /Q *D6.TIB >> %log%
echo Starting shutdown sequence...>> %log%
echo ------------------>> %log%
"C:\Program Files\JShutdown\jshutdown.exe" /sus

補足としては、まずpingコマンド。
コマンドとしては自分自身に60回pingを打っているだけだが、これはほぼ1分間のsleepを実行したいがためである。
上記のスレッドの方で言及があったのだが、バックアップが終わってすぐこのコマンドを走らせると、ドライブへ書き込みがフラッシュされていないこともあるらしく、そのためにwaitを入れている。

次にdelであるが、日曜日の時点で1週間前以降のインクリメンタル分を削除する。
本当はTrue Imageにこの辺の世代管理を行わせたいところだが、お節介なことに、インクリメンタルバックアップを行っていると、完全バックアップが削除される事になると、それを参照するインクリメンタルバックアップの方に完全バックアップを統合しようとするため、数時間に渡ってディスク書き込みを占有しまくるというひどい状況が起こるのである。
これじゃHDDを壊すためにやってるとしか思えないし、何より30分か長くても1時間くらいでサクっと終わってくれないとPCを使えない。
そのためこのスクリプトを噛まして、インクリメンタル分を手動で削除するのである。

これを使うと、日曜日の時点では、先週分のフルバックアップと今日作ったフルバックアップが残り、月曜~金曜は、その週の日曜のフルバックアップ+その日までのインクリメンタルバックアップが残っている状態である。
問題になるのは、日曜日から前週の月~土曜日以前の状態に戻せないことだが、まぁそこは仕様ということで。
ディスク容量に余裕があれば、2週分保持してもいいかもしれないが、ファイル名が自動的に設定されるので、ファイルスタンプを見て削除するしないを決めるとか、バッチファイルだと大変そうなので私はパス。

タスク作成 Part 2

今度は月~金に実行するインクリメンタルバックアップ分のタスクを作成する。
基本的に完全バックアップとほぼ同じだが、違う点だけ記述する。
バックアップポリシー
差分バックアップの作成
別にこんな面倒な処理をしなくても、「新規の完全バックアップをn回目の差分バックアップ後に作成する」をすればいい気がしないでもないが、実行タイミングによっていつ完全バックアップができるかが不明なので(例えば、タスクを作ったのが水曜なら木曜日に完全バックアップができる)、あえてこの機能は使わない。
バックアップの作成オプション
「前後に実行するコマンド」というところで、「コマンドを手動で設定する」にチェックを入れ、「処理に実行するコマンド」に、シャットダウンコマンドを書く。
コマンド=C:\Program Files\JShutdown\jshutdown.exe
作業ディレクトリ=C:\Program Files\JShutdown\
パラメータ=/sus
2つのチェックボックスはオフ。
上記の例ではスタンバイに入れるが、パラメータを変更することでシャットダウンや休止状態も選べるのでjshutdownのマニュアルを参照。
圧縮レベルと、バックアップ優先度、通知などは完全バックアップと同じにする。
アーカイブのコメントの入力
例:「日常のバックアップ+スタンバイ(差分バックアップ)」
タスクの実行スケジュール
週単位
「コンピュータがアイドル状態になるまで待機する」はオフ
週単位で実行するタスク
「開始時刻」は「6時5分」。
上記のWake on Lan設定で6時1分に電源が入り、スタンバイからの復帰は10秒もかからないが、念のため余裕を持って。
「間隔」を「1週間に1回」、曜日を「月~土曜日」をチェックする。

実行時間

私の環境(Core2Duo E6750, Mem 4GB, SATA/1.5 HDD, Cドライブ 41.3GB使用)だと、バックアップにかかる時間は
完全バックアップ
40分~50分
差分バックアップ
ほぼ5分
つまり、平日は6時10分くらいにはもう電源が切れている。
いやぁ、40GBのシステムバックアップが5分で終わるなんてすごいねぇ。

完成

これで後は放置しておくだけ。
この間Internet Explorer8を入れたらSleipnirがおかしくなったのだけど、これのバックアップのおかげで前日の状態にシステムが丸ごと戻って大助かり。
若干バックアップ世代の管理に難があるけれど、もう手放せません。