最近入れ替えた会社のパソコンで未設定だったWindowsのボリュームシャドウコピー(VSS)を新しく設定しました。
よってついでに当ブログでその手順を記事にしておこうと思います。
Windowsのボリュームシャドウコピー(VSS)とは
Windowsの標準機能であり、予め指定されたボリューム全体、または特定のフォルダに対してある時点(瞬間)のデータをまるっと複製し(スナップショット)、一定期間保存しておくことができます。
過去のデータを復旧させる必要が生じた場合に、スナップショットを取得した履歴から対象を選択して、その時点のデータに復元することができる機能です。
Windowsの場合、既定では当機能は無効になっており、有効化するように設定しないと使用できません。
当機能が有効な場合、定期的に指定ボリュームやフォルダのスナップショットを取得し、その指定ボリュームやフォルダ内のファイルを誤って消してしまった場合や、編集してしまったファイルを、過去に複製したデータから復元することができるようになります。
利用しないともったいない大変便利な機能です。
通常のボリュームシャドウコピーの設定手順
まずはWindows標準の設定画面を使用した設定手順を紹介していきます。
「システムのプロパティ」を表示し「システムの保護」タブを選択
例えば「スタートメニュー」内の「システムツール」→「コントロールパネル」を開き、コントロールパネル内の「システム」を選択し「PCのプロパティ」画面を表示します。
その後、画面左上の「システムの保護」を選択し「システムのプロパティ」を表示させます。
「システムの保護」タブの「構成」ボタンを押下します。
「システムの保護」=「ボリュームシャドウコピー」の設定画面が表示されます。
通常は「システムの保護を有効にする」にチェックを切り替えて、「ディスク領域の使用量」を適切なサイズに設定するだけでボリュームシャドウコピーは有効になります。
簡単ですね。
ただ、この手順で設定したボリュームシャドウコピーでは一つ問題があります。
それは、「ボリュームシャドウコピーの実行間隔は一週間ごとの固定値で間隔の変更不可」ということです。
そのため、ボリュームシャドウコピーが実行され、その時点のバックアップが複製された数日後に何らかのトラブルでデータを復元しないといけない状況になった場合、あくまで復旧できるのは数日前にボリュームシャドウコピーが動いた時点までのデータのみです。
まぁ何も復元できないよりは数日前の状態のデータやファイルでも復元できた方がマシだとは思いますが、せめて前日までの状態で復元させてもらえないと役に立つ機会は限定的になってしまいます。
タスクスケジューラーを使用して任意の実行間隔で設定する手順
前述の通り、Windows標準の設定画面を介してシャドウコピーを有効化するだけだと実行間隔が長過ぎて使い勝手が良くないです。
そこで、Windows標準機能の「タスクスケジューラー」を使用したシャドウコピーの設定方法を紹介していきます。
ここからが当記事の主題になります。
シャドウコピーで使用する「ディスク領域の使用量」を設定する
まず、ボリュームシャドウコピーで使用する「ディスク領域の使用量」を設定してください。
この設定は前項で紹介した「システムのプロパティ」で「システムの保護」タブ→「構成」ボタン押下先の画面で指定します。
尚、当画面の「システムの保護を有効にする」のチェックは入れても入れなくてもどちらでも結構です。
このチェックを入れなくても、今回はタスクスケジューラーから定間隔で強制的にボリュームシャドウコピーを起動します。
ただ、タスクスケジューラー起動で実行する場合でも、ボリュームシャドウコピーの「ディスク領域の使用量」は当画面で設定した値(正確にはパーセンテージ)が適用されます。
よって、「ディスク領域の使用量」は必ず適切な値を設定してください。
タスクスケジューラーでシャドウコピーの実行内容を設定する
当項ではタスクスケジューラーを起動してボリュームシャドウコピーの設定をするまでの一覧の手順を紹介します。
タスクスケジューラーの起動
まず、「タスクスケジューラー」を起動します。
尚、過去の記事で「タスクスケジューラー」の使い方について紹介しているので良かったらそちらも参照してください。
新規タスクを作成
タスクスケジューラー画面の右側の項目から「タスクの作成」を選択します。
タスクの作成 -「全般」タブ-
「全般」タブを設定していきます。
名前:必須項目なので必ず入力が必要です。わかりやすい名前を設定してください。
セキュリティオプション:
[ユーザーがログオンしているかどうかに関わらず実行する]
↑こちらを選択してください。Windowsにログオンしていなくても起動していれば実行されるようになります。
[最上位の特権で実行する]
↑今回の設定では検証していませんが、実行権限の問題で処理によってはチェックが外れていると支障がある場合もあるので念のため付けておきます。
構成:[Windows10]←念のため実行環境に合わせて「Windows10」に変えておきます。
タスクの作成 -「トリガー」タブ-
「トリガー」タブを設定してきます。
画面下部の「新規」を押下し「新しいトリガー」画面を表示させます。
「トリガー」では日次実行や週次実行、15分毎など一定時間毎の実行など色々な実行タイミングを設定できますが、今回はシンプルに日次実行を指定します。
画面左側の「設定」枠内で「毎日」を指定します。
右側の「開始」に当スケジュールを開始する日付と時刻を指定します。
ここで指定した時刻は、開始日以降、毎日この指定した時刻になると処理が実行されるようになります。
一日一回の実行でも支障は無いのですが、できれば一日の間に更新したファイルなども可能な限り消失したくはないので、「トリガー」を複数登録することをお勧めします。
例えば朝9時に実行、昼の13時に実行、夕方の17時に実行というように三つの「トリガー」を登録しておくことで、よりデータが守られて安心です。
タスクの作成 -「操作」タブ-
「操作」タブを設定していきます。
今回の記事において、もっとも重要な部分になります。
プログラム/スクリプト:
C:\Windows\System32\wbem\WMIC.exe
↑このままコピペして貼り付けてください。
「WMIC.exe」とはWMI(Windows Management Instrumentation)を操作するためのコマンドラインツールです。
引数の追加(オプション):
shadowcopy call create volume=C:\
↑このままコピペして貼り付けてください。
この引数を「WMIC.exe」に渡すことでCドライブに対してVSSを実行できます。
個人的には、実行環境によってパスが異なるような対象じゃない場合は、対象のexeの実体を明示的にフルパスに明記しておいた方がわかりやすので、フルパスで登録しています。
また、上記の設定例では「引数の追加」の設定で「Cドライブ」をVSSの対象として指定していますが、Dドライブ等の別のディスクも対象に含めたい場合は、当手順で「操作」を登録した後、再度「新規」を押下して、「引数の追加」で shadowcopy call create volume=D:\ といった感じで引数の異なる「操作」を追加登録してください。
タスクスケジューラーでは一つの「タスク」に複数の「操作」を登録できます。
タスクの作成 -「条件」タブ-
タスクスケジューラーで指定した日時に「操作」タブで設定した処理が実行されますが、その処理の実行に関する「条件」を設定します。
当設定項目は既定値でも問題ないのですが、実行環境のパソコンがノートパソコンの場合、既定値の「コンピューターをAC電源で使用している場合のみタスクを開始する」が効いて、電源から給電されていない場合は処理の起動がキャンセルされてしまいます。
よって、その設定だけ念のため変更しておきましょう。
タスクの作成画面の「OK」ボタンを押下して登録
タスクスケジューラーの設定は以上で終了です。
画面下部の「OK」ボタンを押下して新規タスクの登録を完了させてください。
これで、今回の作業で設定したスケジュールに沿ってボリュームシャドウコピーが定時実行されるようになります。
お疲れさまでした。
登録したタスクを手動実行してみる
上記手順で設定作業を実施すれば、本来予定しているタイミングでシャドウコピーが定時実行されるはずですが、念のため、手動でタスクを実行してみましょう。
まず、「タスクスケジューラー」のタスク一覧画面には、先ほど作業で最下行に新しいタスクが追加されているはずです。
その行を右クリックし、「実行」を選択してください。
処理はバックグランドで実行され、画面上での通知は一切表示されません。
正常終了できているかを確認するには、タスクの一覧画面の右側の「操作」枠内の「最新の情報に更新」をクリックし、その後、タスク一覧内の対象行の「前回の実行結果」列を確認してください。
「この操作を正しく終了しました」
と表示されていれば正常に処理が実行できています。
【参考情報】ボリュームシャドウコピーの「ディスク領域の使用量」を確認するには
今回の作業手順では「システムのプロパティ」から遷移する通常の「ボリュームシャドウコピー(システムの保護)」の設定画面にて「システムの保護を有効にする」のチェックは付けなくても問題ないと紹介しました。
ただ、画面構成上、このチェックが「システムの保護を無効にする」に付いていると、その下の設定項目の「ディスク領域の使用量」で指定した値がちゃんと適用されているのか不安になるかと思います。
現に私がそう感じました。
よって以下の手順で設定値が正しく反映できているかを確認できます。
「Windows PowerShell」からコマンド実行
まずはWindowsのスタートメニューから「Windows PowerShell(管理者)」を起動します。
PowerShellが起動したら以下のコマンドを実行します。
vssadmin list shadowstorage
このコマンドを実行することで、シャドウコピーの現在のデータ使用状況やデータサイズの上限値(ディスク領域の使用量)を表示できます。
この画像を見る限り、指定した値が正しく反映できているのが確認できます。
【参考情報】過去のスナップショットからデータを復元する手順
当項では参考までに、ボリュームシャドウコピーで取得したスナップショットの過去の履歴から実際にデータを復元する手順を紹介します。
復元対象のファイルが置いてある(置いてあった)フォルダを右クリック
Windowsのエクスプローラーで復元したいファイルが置いてある、または誤って削除等をしてしまったファイルが置かれていたフォルダを選択し、右クリックします。
右クリック時に表示される項目から「以前のバージョンに復元」を選択します。
スナップショット取得タイミングを指定してファイルを復元
対象のフォルダのプロパティ画面が表示されます。
「以前のバージョン」タブが選択されており、「フォルダのバージョン」枠には、これまでスナップショットを取得した履歴が時系列で並びます。
※掲載している画像はわずかな履歴しかないですが、シャドウコピーを有効化して数日経過すると指定した「ディスク領域の使用量」のサイズの許す限り複製を繰り返すので、かなり以前の状態まで履歴が表示されます。
復元したいタイミングの履歴を選択し、ウィンドウ下部の「開く」を押下すると、新しいウィンドウでフォルダが開きます。
これがそのタイミングで取得したスナップショットの中身になります。
このフォルダ内に存在するファイルをデスクトップにでもドラッグしてあげれば復元は完了です。
非常に簡単ですね。
最後に
今回はWindows10環境で「VSS(ボリュームシャドウコピー)」を任意の実行間隔で起動する設定手順を紹介しました。
冒頭で記載した通り、会社の自身のパソコンで設定手順を調べていたところ、たまたま開いたページの設定手順に誤記があり、おかげで上手く動かずに困惑した為、当ブログの記事にすることにしました。
尚、余談ですが、VSSの仕組みは非常に優秀で、有償のバックアップソフトなんかでも、このWindows標準のVSSを内部的に呼び出して動いている製品もあります。
是非活用してみてください。
今回も読んでいただきありがとうございました。