バックアップ検出フェーズの概要
IVssBackupComponents::GatherWriterMetadata を呼び出した後、リクエスターは、この呼び出しから返された IVssAsync インターフェイスのインスタンスを使用して、システム上のすべてのライターがライター メタデータ ドキュメントの構築を完了したタイミングを決定します。 詳細については、「 VSS でのバックアップの処理の概要」を参照してください。
この時点で、リクエスターは探索フェーズを開始し、メタデータを調べて、実行されているアプリケーションと、完全なバックアップを取得するためにシャドウ コピーする必要があるボリュームを決定できます。 次の表は、バックアップ検出フェーズに必要な一連のアクションとイベントを示しています。
リクエスター アクション | イベント | ライター アクション |
---|---|---|
ライター メタデータ ドキュメントを取得します (「IVssBackupComponents::GetWriterMetadata,IVssExamineWriterMetadata」を参照してください)。 | なし | この期間中、ライターは通常の操作を続行できる場合があります。 |
コンポーネントとその ファイル セットの一覧と除外されたファイルを使用して、バックアップに関連するボリュームとファイルの一覧を取得します ( IVssWMComponent、 IVssWMFiledesc を参照)。 | なし | なし |
ライターのライター メタデータ ドキュメントでバックアップするコンポーネントを選択します。 各コンポーネント の IVssBackupComponents::AddComponent を呼び出して、バックアップ コンポーネント ドキュメントに追加します。 ( バックアップの選択性の操作 とバックアップ コンポーネントの操作に関するドキュメントを参照してください)。 | なし | なし |
サポートされているボリュームのシャドウ コピー セット、コンテキスト、およびチェックを初期化します (「IVssBackupComponents::StartSnapshotSet、IVssBackupComponents::IsVolumeSupported」を参照してください)。 | なし | なし |
コンポーネント以外のバックアップを実行する場合は、各ボリュームの IVssBackupComponents::AddToSnapshotSet を呼び出して、ライター メタデータ ドキュメントからシャドウ コピー セットに目的のターゲット ボリュームを追加します。 それ以外の場合、( AddComponent を呼び出して) バックアップ コンポーネント ドキュメントに既に追加されているライター メタデータ ドキュメント内のコンポーネントの場合、リクエスターは影響を受けるボリュームごとに IVssBackupComponents::AddToSnapshotSet も呼び出す必要があります。 | なし | なし |
検出フェーズ中のライター アクション
バックアップの検出フェーズは、主にライター メタデータ ドキュメントから取得した情報を処理するリクエスターで構成されるため、ライターに必要な要件はほとんどありません。
理論上、ライターは、この時点で正常に実行し続ける可能性があります。 ただし、ライターは、今後のシャドウ コピーとバックアップ操作の準備を開始することが望ましい場合があります。
探索フェーズ中のリクエスター アクション
リクエスターは、IVssBackupComponents::GetWriterMetadata を介して取得された IVssExamineWriterMetadata オブジェクトを使用して、すべてのライターのメタデータを反復処理し、バックアップするデータを持つライターを選択します。
この時点で、リクエスターは IVssExamineWriterMetadata::GetComponent を使用してライターのコンポーネントを反復処理することで、各ライターのバックアップ候補の初期リストを生成する必要があります。 これにより、要求元に IVssWMComponent オブジェクトが提供されます。そこから、 IVssWMComponent::GetFile、 IVssWMComponent::GetDatabaseFile、および IVssWMComponent::GetDatabaseLogFile を使用して、バックアップするファイルの仕様を取得できます。
IVssWMFiledesc オブジェクトはワイルドカード文字を使用してファイルの場所情報を保持できるため、FindFirstFile、FindFirstFileEx、FindNextFile などの関数を使用する必要がある場合があります。
シャドウ コピーが完了するまで、ライターは通常の作業の過程でディスクに対してファイルを追加または削除できるため、現時点ではバックアップするファイルの実際のリストを生成しないでください。
代わりに、バックアップするファイルとボリュームの最初の一覧は、次の手順でこの時点で見つかります。
- 各ライターのライター メタデータ ドキュメント ( IVssExamineWriterMetadata を使用) でバックアップ可能なコンポーネントと選択できないコンポーネントをすべて調べて、 それらをコンポーネント セット に整理すると 、論理パス が使用されます ( 「選択性と論理パスの操作」を参照)
- IVssBackupComponents::AddComponent を使用したバックアップ コンポーネント ドキュメントに、必要なすべてのコンポーネント (バックアップ先祖に対して選択できないバックアップ コンポーネントの場合は選択不可) を明示的に含める
- ( IVssBackupComponents::AddComponents を使用して) コンポーネント セットを定義しないバックアップ コンポーネントに対してオプションの選択可能を明示的に含める選択
- バックアップに参加するコンポーネント セットを選択するには、(IVssBackupComponents::AddComponent を使用して) バックアップ コンポーネントの定義可能な選択を明示的に追加します。これには、コンポーネント セットのサブコンポーネントが暗黙的に含まれます。
- リクエスターは、選択したライターのライター メタデータ ドキュメントおよびボリューム管理機能の ファイル セット 情報を使用して、バックアップするファイルのパスとシャドウ コピーが必要なボリュームを決定します
バックアップとバックアップ コンポーネント ドキュメントに明示的に含まれている ( IVssBackupComponents::AddComponent を使用する) コンポーネントのみが、そのドキュメントに追加された IVssComponent インターフェイスのインスタンスを持つことに注意してください。 これらのインスタンスは、明示的に含まれるコンポーネントとその暗黙的に含まれるサブコンポーネントの両方のコンポーネント設定を調べて変更するために使用されます ( 「選択性」と「コンポーネントのプロパティの操作」を参照してください)。
ライターにライターのコンポーネントのいずれかが含まれている場合は、必要なすべてのコンポーネントを追加する必要があります。 ただし、リクエスターは、ライターのすべてのコンポーネント セットを完全にスキップすることもできます。 ライターのコンポーネントが明示的に選択されていない場合、ライターは選択されず、VSS は、そのライターがバックアップ操作の残りの部分に参加することを禁止します。
リクエスターは、 IVssBackupComponents::StartSnapshotSet を呼び出すことによって、選択したボリュームを含むシャドウ コピー セットを開始します。
ボリュームがシャドウ コピーに参加できる場合 ( IVssBackupComponents::IsVolumeSupported で確認できます)、リクエスターは IVssBackupComponents::AddToSnapshotSet を使用してそのボリュームをシャドウ コピー セットに追加できます。
一般的には役に立ちませんが、要求者は、特定のボリュームのシャドウ コピーを維持する プロバイダー を選択することもできます (詳細については、「 プロバイダーの選択 」を参照してください)。
マウントされたフォルダーまたは再解析ポイントを含むボリュームの処理には注意が必要です。 マウントされたフォルダーまたは再解析ポイントは、シャドウ コピーに表示され、バックアップできます。 ただし、マウントされたフォルダーまたは再解析ポイントは、シャドウ コピーされたボリューム上で走査できません (「 マウントされたフォルダーと再解析ポイントの操作」を参照してください)。
バックアップのこの時点で、バックアップ コンポーネント ドキュメントが初期化され、入力されます。 今後の操作では、ライターと要求者は IVssComponent インターフェイスを使用して相互に通信できます。
ライターには、PrepareForBackup、PostSnapshot、BackupComplete イベントを処理するときに、IVssComponent インターフェイスへのアクセス権が付与されます。