シャドウ コピーからのファイルの除外

Windows Vista および Windows Server 2008 以降では、VSS ライターまたはアプリケーションの開発者は、シャドウ コピーから特定のファイルを除外することを選択できます。

シャドウ コピー内のファイルのパフォーマンスへの影響とシャドウ コピーの記憶域 ("diff 領域" とも呼ばれます) の使用は、シャドウ コピーの作成後のファイルの内容の変更量に直接関係します。 さらに、シャドウ コピーからファイルを除外すると、シャドウ コピーの作成が遅くなる可能性があります。

これらの理由から、ファイルは大きく、1 つのシャドウ コピーと次のシャドウ コピーの間で大きな変更が発生し、バックアップする必要がない場合にのみ、シャドウ コピーから除外する必要があります。

アプリケーションに属するファイルのみを除外する必要があります。

シャドウ コピー コンテキストで VSS_VOLSNAP_ATTR_NO_AUTORECOVERY フラグが設定されている場合、自動回復は無効になり、シャドウ コピーからファイルを除外することはできません。 詳細については、 _VSS_VOLUME_SNAPSHOT_ATTRIBUTES 列挙を参照してください。

AddExcludeFilesFromSnapshot メソッドの使用

VSS ライターは、次のようにシャドウ コピーからファイルを除外できます。

  1. IVssCreateWriterMetadataEx::AddExcludeFilesFromSnapshot メソッドを呼び出して、除外するファイルを報告します。
  2. ライターの CSVsWriter::OnPostSnapshot メソッドで、シャドウ コピーからファイルを削除します。

FilesNotToSnapshot レジストリ キーの使用

Note

FilesNotToSnapshot レジストリ キーは、アプリケーションによってのみ使用されることが想定されています。 これを使用しようとするユーザーには、次のような制限が課されます。

  • 以前のバージョンの機能を使用して、Windows Server 上で作成されたシャドウ コピーからファイルを削除することはできません。
  • 共有フォルダーのシャドウ コピーからファイルを削除することはできません。
  • DiskShadow ユーティリティを使用して作成されたシャドウ コピーからファイルを削除できますが、Vssadmin ユーティリティを使用して作成されたシャドウ コピーからファイルを削除することはできません。
  • ファイルは、ベストエフォート方式でシャドウ コピーから削除されます。 つまり、削除されることは保証されていません。

 

VSS アプリケーションでは、次のレジストリ キーを使用して、シャドウ コピーの作成時にシャドウ コピーからファイルを削除できます。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot

このレジストリ キーには、ファイルを除外できるアプリケーションごとにREG_MULTI_SZ値があります。 ファイルは、* ワイルドカードを含むことができる完全修飾パスで指定されます。

いずれの場合も、パス文字列に一致するファイルがない場合、エントリは無視されます。

ファイルが適切なレジストリ キー値に追加されると、シャドウ コピー最適化ライターによって作成中にシャドウ コピーからベスト エフォートベースで削除されます。

完全修飾パスを指定できない場合は、$UserProfile$ または $AllVolumes$ 変数を使用してパスを暗黙的に指定することもできます。 次に例を示します。

  • $UserProfile$\Directory\サブディレクトリ\FileName.*
  • $AllVolumes$\TemporaryFiles\*.*

パスを再帰的にするには、末尾に "/s" を追加します。 次に例を示します。

  • $UserProfile$\Directory\サブディレクトリ\FileName.* /s
  • $AllVolumes$\TemporaryFiles\*.* /s

$UserProfile$ 変数を指定すると、パス文字列がコンピューター上のすべてのユーザー プロファイルに適用されます。 ユーザー プロファイルは、次のレジストリ キーを調べることで列挙されます。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList

$AllVolumes$ 変数を指定すると、コンピューター上のすべてのシャドウ コピーにパス文字列が適用されます。 たとえば、パスが "$AllVolumes$\TemporaryFiles\*.* /s" で、コンピューターに C:、D:、E: の 3 つのボリュームがあるとします。 C: と E: にパス "\TemporaryFiles\" が含まれており、ボリューム D: にパス D:\Data\ のみが含まれている場合、ディレクトリ ツリー C:\TemporaryFiles\ は C: のシャドウ コピーから削除され、ディレクトリ ツリー E:\TemporaryFiles\ は E: のシャドウ コピーから削除されます。

管理者は、次のレジストリ キーを使用して、$UserProfile$ 変数の拡張を無効にすることができます。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Vss\Settings

このレジストリ キーの下で、値の名前に DisableUserProfileExpansion、値型にREG_DWORD、値データに 0 以外の値を指定します。

FilesNotToBackup レジストリ キーについて

FilesNotToBackup レジストリ キーを使用して、バックアップ アプリケーションでバックアップまたは復元しないファイルとディレクトリの名前を指定できます。 ただし、これらのファイルはシャドウ コピーから除外されません。 このレジストリ キーの詳細については、「 バックアップと復元のレジストリ キーと値」を参照してください。