背景
Windows 2008 から標準搭載されている「Windows Server バックアップ」ですが、コマンドラインでも動かせて、昔の「NT バックアップ」よりはるかに使い勝手が良いです。
ただ、履歴管理はできなく、ネットワーク越しに取得すると 1 世代しかとれないわ(標準では)、履歴管理はできないわと、ファイルサーバーのバックアップにはあまり向かないようです。
が、標準ですので使っている方も多々いらっしゃいます。
専用ボリュームに取得すれば、古いシャドウコピーも勝手に消されるので、これはこれで便利。のはずなのですが、まれに古いシャドウコピーが削除されずに「保存対象がいっぱいです」みたいな感じでバックアップが永遠に取得できなくなることがあります。
経験上、OS のバージョンが上がっても解消されていないので、ここでは古いシャドウコピーを削除する方法をまとめておきます。
設定内容(画面ショットは Windows 2008 R2 ですが、2012/2016 でも大丈夫です)
1.最初にシャドウコピーの履歴を確認します
コマンドプロンプトから、以下のコマンドを実行します
・vssadmin list shadows /for=<BackupTarget>
<BackupTarget>:Windows Server バックアップで保存先にしているボリューム名です。
Z: とかです
※上記の場合は履歴が一つしかありませんが、状況によっては複数あることもあります。その場合は、結果を以下のようにリダイレクトすると以降の作業時に楽です。
・vssadmin list shadows /for=<BackupTarget> > C:\user\administrator\desktop\vsslist.txt
2.消したいシャドウコピーの「シャドウコピーID」を確認します
項番1 で指定したボリュームに存在するシャドウコピーの一覧で、削除対象のシャドウコピーの「シャドウコピーID」を確認します
シャドウ コピー ID: {be9243d9-42f7-41d8-aa22-7b18e71a0062}
3.diskshadow ユーティリティを起動します
コマンドプロンプトを開き、以下のコマンドを実行します
・ Diskshadow
4.シャドウコピーを削除します
項番2 で確認した「シャドウコピーID」を削除します。
DISKSHADOW> の後に、以下のコマンドを入力します。
・DELETE SHADOWS ID <削除したいシャドウコピーID> <ターゲットボリューム名>
項番1 を例にすると、以下のようになります。
・DELETE SHADOWS ID {be9243d9-42f7-41d8-aa22-7b18e71a0062} G:
5.余談
項番4 でシャドウコピーを消す際に、「一番古いのを消したい」とか「ぜんぶ消してしまいたい」とかの場合は、そういうオプションも用意されてます。
例えば、「一番古いシャドウコピーを消したい」のでしたら、以下のコマンドで OK です。一番古い[10 世代分]を消したければ、このコマンドを 10 回繰り返すことで実現できます。
・DELETE SHADOWS OLDEST G:
DELETE SHADOWS { ALL | VOLUME <ボリューム> | OLDEST <ボリューム> | SET <セット I
D> | ID <シャドウ ID> | EXPOSED <ドライブ文字、マウント ポイント、または共有> }
シャドウ コピー (永続と非永続の両方) を削除します。
ALL すべてのシャドウ コピー。
VOLUME <ボリューム> 指定したボリュームのすべてのシャドウ
コピーを削除します。
OLDEST <ボリューム> 指定したボリュームの最も古いシャドウ
コピーを削除します。
SET <セット ID> <セット ID> パラメーターで指定した
シャドウ コピー セット内のシャドウ コピーを削除します。
ID <シャドウ ID> <シャドウ ID> パラメーターで指定した
シャドウ コピーを削除します。
EXPOSED <露出名> 指定したドライブ文字、マウント ポイント、
または共有に露出しているシャドウ コピーを削除します。
例: DELETE SHADOWS ALL
DELETE SHADOWS EXPOSED p:
DELETE SHADOWS EXPOSED 共有名