VSS 増分バックアップと差分バックアップでのライター ロール
増分バックアップと差分バックアップへのライターの参加は、通常、PrepareForBackup( Identify (CVssWriter::OnIdentify)処理中に行われます。CSVsWriter:OnPrepareBackup)、および PostSnapshot (CVssWriter:OnPostSnapshot) イベントを します。 ライターが参加する方法は、バックアップ スタンプと最終変更時刻をサポートしているかどうか、およびバックアップを実行するリクエスターが部分ファイル操作をサポートするかどうかによって形成されます。
増分バックアップと差分バックアップ中の識別イベントの処理
Identify イベントの処理中に、ライターは、バックアップ スキーマ (VSS_BACKUP_SCHEMA) とファイル指定バックアップの種類 (VSS_FILE_SPEC_BACKUP_TYPE) マスクを使用して、増分および差分バックアップ操作の基本アーキテクチャを確立します。
ライターは、VSS_BACKUP_SCHEMA 値のビット マスクを作成し、IVssCreateWriterMetadata::SetBackupSchema メソッドに渡すことによって、ライター メタデータ ドキュメントでサポートする操作を示します。 これにより、ライターは次をサポートするかどうかを示すことができます。
- 増分バックアップ (VSS_BS_INCREMENTAL)
- 差分バックアップ (VSS_BS_DIFFERENTIAL)
- 増分バックアップと差分バックアップを混在させることはできません (VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL)
- バックアップ スタンプを使用した増分バックアップと差分バックアップ (VSS_BS_TIMESTAMPED)
- ファイルの最終変更 (VSS_BS_LAST_MODIFY) に関する情報に基づく増分バックアップと差分バックアップ
ライターは、ファイル仕様のバックアップの種類のマスクを使用して、増分バックアップまたは差分バックアップにファイルを含める方法に関するファイル セット レベルの情報を要求者に提供します。
ライターは、VSS_FILE_SPEC_BACKUP_TYPE 値のビット マスクを作成し、それを IVssCreateWriterMetadata::AddDatabaseFiles、IVssCreateWriterMetadata::AddDatabaseLogFiles、または IVssCreateWriterMetadata に渡すことによって、ファイル セットをコンポーネントに追加するときに、ファイル セットのファイル仕様のバックアップの種類マスクを設定できます。AddFilesToFileGroup.
差分バックアップと増分バックアップに影響する VSS_FILE_SPEC_BACKUP_TYPE 列挙には、次の 3 つの "バックアップが必要です" 値があります。
- VSS_FSBT_ALL_BACKUP_REQUIRED
- VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED
- VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED
3 つの "シャドウ コピーが必要" の値があります。
- VSS_FSBT_ALL_SNAPSHOT_REQUIRED
- VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED
- VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED
ファイル仕様のバックアップの種類として "シャドウ コピーが必要" というタグが付いたファイル セットは、INCREMENTAL、DIFFERENTIAL、ALL (増分操作と差分操作の両方を含む) バックアップ操作を実行するときに、要求者がシャドウ コピーからデータをコピーする必要があるかどうかを示します。
INCREMENTAL、DIFFERENTIAL、または ALL バックアップ操作に適用される "backup required" フラグは、ライターが、バックアップ操作の復元後に現在のバージョンのファイル セットのコピーを使用できるようになることを想定していることを示します。 通常、これは、ファイル セットに "バックアップが必要" というタグが付いている場合、バックアップまたは変更が最後に行われた日時に関係なく、増分バックアップまたは差分バックアップ中にすべてのメンバーがバックアップ メディアにコピーされることを意味します。
既定では、ファイル セットは、ファイル仕様のバックアップの種類が VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIREDのコンポーネントに追加されます。 したがって、ライター開発者が既定を使用しない場合 (別のファイル仕様のバックアップの種類を選択するか、部分的なファイル操作を使用するか、または異なるファイルを使用して)、ほとんどのファイル セット内のファイルは通常、バックアップ メディア全体にコピーされます。
この時点で、ライターのライター メタデータ ドキュメントには、要求者が差分バックアップまたは増分バックアップを開始するために必要なほとんどの情報が完全に設定されます。 バックアップをサポートするファイル セットまたはファイル レベル情報の追加指定は、PrepareForBackup イベント中に処理されます。
増分バックアップと差分バックアップ中の PrepareForBackup イベントの処理
リクエスターが実際のバックアップ操作を続行する前に、ライターは、IVssComponent インターフェイスを介して要求者のバックアップ コンポーネント ドキュメントを変更することで、増分または差分 バックアップの仕様を変更できます。
ライターは IVssComponent インターフェイスを使用するため、通常、PrepareForBackup イベントを処理しながらこれらの準備を実行します。
CSVsWriter:OnPrepareBackupでは、ライターは、一部のファイルのバックアップの評価方法をより正確に指定したり、バックアップに使用するメカニズムを指定したり、場合によってはバックアップ スタンプを設定したりできます。
-
部分ファイルの
-
リクエスターがそれらをサポートしている場合、ライターは、部分的なファイル操作を使用して増分バックアップまたは差分バックアップを実装することを選択できます。 (ライターは、リクエスターが CVssWriter::IsPartialFileSupportEnabled呼び出すことによって、部分ファイル操作をサポートしているかどうかを判断できます)。
ライターは、IVssComponent::AddPartialFile を使用して、増分操作または差分操作中にバックアップする選択したファイルのそれらの部分を示します。 要求者は、この仕様に従う必要があり、常にファイルの指定されたセクションをバックアップする必要があります。 (部分ファイル操作の詳細については、「部分ファイル の操作」を参照してください)。
IVssComponent::AddPartialFileを使用すると、ライターは、(IVssCreateWriterMetadata::AddDatabaseFiles によって) コンポーネント セットのいずれかに追加されていないファイルをバックアップに追加できます。、IVssCreateWriterMetadata::AddDatabaseLogFiles、または IVssCreateWriterMetadata::AddFilesToFileGroup) を部分ファイルとしてします。 この方法でバックアップに追加される新しいファイルは、このバックアップ用に既にシャドウ コピーされているボリューム上に存在する必要があります。
ファイルが部分的なファイル操作に関係している場合、これはファイル仕様のバックアップの種類よりも優先されます。これは無視されます。
-
の違うファイル
-
最後に変更されたバックアップ スキーマ (VSS_BS_SCHEMA) をサポートするライターは、差分バックアップ 増分バックアップまたは差分バックアップに ファイルを追加できます。
異なるファイルを指定する場合、ライターは IVssComponent::AddDifferencedFileByLastModifyTime を使用し、パス、ファイル名、および再帰フラグを指定します。ただし、これらはコンポーネントに含まれるファイル セットと一致する必要はありません。
実際、ライターは、(IVssCreateWriterMetadata::AddDatabaseFiles、IVssCreateWriterMetadata::AddDatabaseLogFiles、または IVssCreateWriterMetadata::AddFilesToFileGroupをして) コンポーネント セットのいずれかに追加されていないファイルを、差分ファイルとしてバックアップに追加できます。 この方法でバックアップに追加される新しいファイルは、このバックアップ用に既にシャドウ コピーされているボリューム上に存在する必要があります。
通常、ライターは、ライター独自の履歴メカニズムに基づいて、差分ファイルを追加する際の最終変更時刻も指定します。 この最終変更時刻 (指定されている場合) は、ファイルを増分バックアップまたは差分バックアップに含める必要があるかどうかを判断する際に、要求者が常に使用する必要があります。
ライターは、差分ファイルを増分バックアップ セットまたは差分バックアップ セットに追加するときに、最終変更時刻を指定しないことを選択できます。 その場合、要求者は独自のメカニズム (以前のバックアップのログやファイル システム情報など) を自由に使用して、差分ファイルを増分バックアップと差分バックアップのどちらに含めるかを判断できます。
相違するファイルのファイル仕様のバックアップの種類は無視されます。
-
バックアップ スタンプ
-
バックアップ スタンプ (VSS_BS_TIMESTAMP) をサポートするライターには、バックアップが最後にいつ発生したかに関する情報を格納するための独自のプライベート形式があります。 この情報は、バックアップ中にライターによって生成されます。
バックアップ スタンプは、IVssComponent::SetBackupStamp メソッドによって文字列としてバックアップ コンポーネント ドキュメントに格納されます。 バックアップ スタンプは、IVssComponentのインスタンスに対応するコンポーネント (またはコンポーネント セット) 内のすべてのファイル セットに適用されます。
要求元が以前のバックアップのバックアップ スタンプにアクセスできる場合は、IVssBackupComponents::SetPreviousBackupStamp呼び出すことによってライターが使用できるようになります。
ライターは、IVssComponent::GetPreviousBackupStampを使用して、このタイム スタンプを調べることができます。
リクエスターはバックアップ スタンプを含む文字列を格納して返すだけであることに注意してください。 文字列の形式や使用方法については何も知りません。ライターだけがその情報を持っています。
ライターは、IVssComponent::GetPreviousBackupStampを呼び出した後、IVssComponent::SetBackupStamp を使用して現在のバックアップ スタンプを更新し、現在の増分バックアップ操作または差分バックアップ操作の日付を独自の形式で記録することができます。