29歳、離婚しました。

家事は元妻にまかせっきり。そんな生活力ゼロ男の離婚後の生活を綴ったブログです。著者がその後の生活の中で見つけた生活術やお役立ち情報をお届けします。

Windows Server バックアップで複数の保存先にバックアップを取る方法

      2018/04/24

このブログでは、アフィリエイト広告を利用しています。

Windows Serverのバックアップを安価・手軽に取得するなら、Windows Server バックアップ!

Windows Server 2008以降のサーバーOSから、標準機能の一つとしてWindows Server バックアップが搭載されています。
このWindows Server バックアップ、Windows Server 2003時代に使われていたntbackupと比べると、かなり使いやすくなった印象です。

機能面では、有償のバックアップソリューションには及びませんが、最低限必要であろう機能は備わっていること。
またOSの標準機能として提供され、OSのライセンスを購入すれば無償で利用可能なことから、安価かつ手軽にWindows Serverのバックアップを取得したい場合には、かなりおすすめの機能です。

ただこのWindows Server バックアップには、要注意ポイントがあるんです。

バックアップ履歴がすべて消失することがある!?

実はWindows Server バックアップの動作中に、過去のバックアップ履歴がすべて削除されることがあります
これについては以前のエントリー、Windows Serverで不定期に発生していたvolsnap 25エラーがなおった!にて、詳細に書いているので、ここではその概要を説明するにとどめます。

この現象は、Windows Server バックアップの動作中に、ディスクI/O負荷が高いなどの理由で、バックアップの履歴を管理するDiff Areaという特殊領域の拡張処理が、タイムアウトにより失敗した場合に、Diff Area内のデータが不正な状況となり、その結果過去の履歴を含むすべてのバックアップが消失する、というもの。

根本原因の一つであるディスクI/O負荷については、シャドーコピーの記憶域をシャドーコピーの対象になっていない別のディスク上のボリュームに作成するなどの対策で、ある程度は改善される可能性もあります。
ただ元々ディスクI/O負荷が高いサーバーでは、バックアップの全削除現象の発生頻度が減ることはあっても、ゼロにはならないかもしれません。

一時的とはいえ、バックアップがない状態になるのは問題!

このバックアップの全削除現象の一番の問題は、一時的とはいえ、バックアップがない状態になることです。

Windows Server バックアップの動作中Diff Areaの拡張に失敗した場合、Windows Serverはまず過去のバックアップ履歴を削除、その後にフルバックアップを取得、という流れで処理を実行します。
そのためフルバックアップの取得が完了するまでは、バックアップがない状態になり、オリジナルデータしかない状態が発生します。

そしてもしこの間にディスク障害が発生した場合、バックアップがないわけですから、データをバックアップから復元することはできません。

専門の業者さんによるデータ復旧サービスを利用すれば、データを復旧できるかもしれません。
ですがすべてのデータを復旧できる保証はありませんし、仮にできたとしても多くの時間と費用がかかるケースもあります。

Windows Server バックアップの実行中にバックアップの全削除現象が発生、バックアップがない状況下で、ディスク障害が発生する可能性はどれくらいか?
といわれると、可能性としてはかなり低いのかもしれません。

ですが万が一ということもあります。
データの安全を第一に考えると、バックアップが一切ない状態・時間が起こらないようにしたいですよね。

複数の保存先にWindows Server バックアップを取得しておけば安心!

Windows Server バックアップの実行時に発生するバックアップの全削除現象は、ディスクI/O負荷が関連するため、その発生タイミングを事前に把握するのは困難です。
そのためバックアップの全削除現象がいつ起きても大丈夫なように、Windows Server バックアップによるバックアップを複数の保存先に取得しておくと良いでしょう。

たとえば最も安価に対応する場合、2台のUSB外付けHDDを用意。(それぞれAとBとする。)
そしてHDD-AとHDD-Bに交互にバックアップを取得します。

もしHDD-Aにバックアップ中に、バックアップの全削除現象が発生。
その後にフルバックアップ取得処理が実行された場合、HDD-Bのバックアップは削除されずに残っているため、バックアップがない状態が発生せずに済む、というわけ。

ただこのバックアップを別の保存先に交互に取得するという動作は、Windows Server バックアップのGUIでは設定できません。
これを実現するには、より細かいスケジューリングができるwbadminコマンドを使用、または併用する必要があります。

Windows Server バックアップは内部的にwbadminコマンドを実行しています!

GUIで設定したWindows Server バックアップは、実は内部的にwbadminというコマンドを実行してバックアップを取得しています。

具体的には、タスクスケジューラーに以下のようなコマンドを実行するよう、スケジューリングしています。

※templateIdには、テンプレートの識別子が指定されています。

そのためこのwbadminコマンドを使用すれば、Windows Server バックアップと同じバックアップを取得可能です。
またGUIによるWindows Server バックアップに比べ、より細かいスケジューリングも可能です。

wbadminコマンドを使ったバックアップの例

たとえばwbadminコマンドでC、D、E、FドライブのデータのバックアップをUドライブに取得・保存する場合、PowerShellで以下のコマンドを実行します。

尚、wbaminコマンドの実行にはAdministratorsグループ、またはBackup Operatorsグループの権限が必要です。
また管理者特権が必要となるため、管理者として実行する必要があるので、ご注意ください。

wbadminコマンドを使ったバックアップスクリプトの例

先のコマンドを応用したPowerShellスクリプトの例をご紹介します。

テキストエディターを起動して以下のコマンドを記述。

ファイル名をwbadmin-a.ps1として、保存してください。

このPowerShellスクリプトを管理者権限で実行すると、C、D、E、FドライブのデータのバックアップをUドライブに取得・保存し、その標準出力をwbadmin-a.ps1と同じパスに、console.logという名前でテキスト出力します。

wbadminコマンドを使って、バックアップを別の保存先に交互に取得する方法

さて、wbadminコマンドによるバックアップ方法の説明が終わったので、いよいよ本題。
バックアップを別の保存先に交互に取得するという動作について。

といっても、先のwbadmin-a.ps1で『-backuptarget:”U:\”』としていたところを、別の保存先に変えたPowerShellスクリプトを別名(wbadmin-b.ps1など)で作り、それぞれを交互に実行するようにタスクスケジューラーに登録するだけでOK!(SYSTEM権限、最上位の特権で実行するように設定)

たとえば0時、6時、12時、18時にwbadmin-a.ps1を、3時、9時、15時、21時にwbadmin-b.ps1を実行する、といった具合です。

尚、GUIで設定したWindows Server バックアップをHDD-Aに取得、wbadminコマンドで設定したバックアップをHDD-Bに取得、といったように併用も可能です。

同時にバックアップが動いてしまったら、どうなるの?

複数の保存先にバックアップを取得する場合、HDD-Aへのバックアップに時間がかかってしまい、HDD-Bへのバックアップの開始時刻になった場合どうなってしまうのか?と心配になってしまうかもしれませんが、これについてはまったく問題ありません。

というのも、wbadminコマンドは同時実行されないように、コマンド自体に制御機構が備わっているため。

たとえばHDD-Aへのバックアップに時間がかかってしまい、HDD-Bへのバックアップの開始時刻になった場合、HDD-Bへのバックアップ開始時にエラーが発生し、HDD-Bへのバックアップは実行されません。(『別のバックアップ操作または回復操作が進行中のため、’XXXX’ に開始したバックアップ操作は失敗しました。競合する操作を停止してから、バックアップ操作を再実行してください。』といったエラーが発生する。)

その後次のHDD-Bへのバックアップ開始時刻に、HDD-Aへのバックアップが終わっていれば、HDD-Bへのバックアップが開始します。
ただタイミングによっては、2回連続でHDD-Aへのバックアップが実行されるケースもあります。

wbadminコマンドの進行状況を見たいんだけど?

wbadminコマンドの進行状況は、Windows Server バックアップのGUIに表示されます。
また実行中の進行状況だけでなく、前回の実行結果、実行時間などもWindows Server バックアップのGUIから閲覧可能です。

たとえばバックアップ中は以下のように、GUIで設定したWindows Server バックアップの実行時と同じように進行状況を見ることができます。

wbadminで設定したバックアップの進行状況を、Windows Server バックアップのGUIで確認している様子

もちろん詳細な進行状況も。

wbadminで設定したバックアップの詳細な進行状況を、Windows Server バックアップのGUIで確認している様子

Windows Server バックアップのGUIでも複数のディスクを保存先に指定できるが、運用に手間がかかる

実はWindows Server バックアップのGUI(バックアップ スケジュール ウィザード)の作成先ディスクの選択画面では、バックアップの保存先として複数のディスクを指定可能です。

Windows Server バックアップのGUI(バックアップ スケジュール ウィザード)の作成先ディスクの選択画面

ただこれは、ディスクの付け外しにより複数のディスクにバックアップを取得するもので、複数のディスクに交互にバックアップを取るような動きをするものではありません。

たとえば2つのディスクを保存先に指定した場合、初回のバックアップ時に、バックアップ先をWindows Server バックアップ(内部的にはwbadmin)が決定。
以後は初回と同じディスクにバックアップを取得し続けます。

そして保存先のディスクを取り外したなどの理由で、ディスクがオフライン状態になると、もう一方のディスクにバックアップを取得するようになります。

つまり基本的には常に同じディスクにバックアップを取得、そのディスクがオフラインの時に、バックアップ先を変更するような動作なんです。(マイクロソフトさんに確認済み。)

そのため常に最新に近い状態のバックアップを複数のディスクに取得したい場合、バックアップの度にディスクの付け外しをするなどしてディスクのオフライン化を行い、保存先を切り替えさせる必要がある、というわけ。

これは手間がかかる作業なので、wbadminコマンドを使い、保存先を切り替えた方が運用の際は楽でしょう。

ちなみにこの複数のディスクを保存先に指定する機能は、本来取り外したディスクを遠隔地(オフサイト)に置いておくことにより、災害時にバックアップデータがオリジナルデータとともに消失する可能性を減らすための機能です。(災害対策)

したがってバックアップ対象が重要なデータで災害対策も必要な場合には、この機能とwbadminコマンドによるバックアップ(交互に複数箇所に取得)を組み合わせた運用形態とすると、より安心でしょう。

バックアップはとっても大切!

人間の誤操作による削除やハードウェアの障害、使用しているソフトウェアの不具合など、大切なデータが予期せず消失してしまう原因はたくさんあります。
そんな時頼りになるのが、バックアップです。

そのため日頃からしっかりとバックアップを取得・管理し、いざというときに備えておくことを強くおすすめします。

 - Windows, デジタル・家電

ピックアップ コンテンツ&スポンサーリンク