ライターによるコンポーネントの定義

コンポーネントは、ライター メタデータ ドキュメントが設定されると、バックアップ操作の開始時に Identify イベント に応答して、ライター メタデータ ドキュメント内のライターによって定義され、インスタンス化されます (「 バックアップ初期化の概要」を参照)。

IVssCreateWriterMetadata と IVssCreateWriterMetadata::AddComponent を使用して、ライター メタデータ ドキュメントにコンポーネントを作成する場合、ライターは次を指定する必要があります。

  • コンポーネントが バックアップ用に選択できるかどうか
  • コンポーネントの種類
  • コンポーネント名 (特定のライター インスタンス内だけでなく、すべての ライター インスタンス で一意である必要があります)
  • コンポーネントにライター固有のメタデータが関連付けられているかどうか
  • 正常にバックアップされた後にライターに通知が必要かどうか

ライターは、必要に応じて次を指定できます。

  • コンポーネントの 論理パス (特定のライター インスタンス内だけでなく、すべてのライター インスタンスで一意である必要があります)
  • コンポーネントの説明 (またはキャプション)
  • コンポーネントを示すために URI と共に使用するアイコン

コンポーネントに実際にファイルを含める必要はありません。 この種類の空のコンポーネントまたは "ダミー" コンポーネントは、コンポーネントを整理する場合に役立ちます。 このようなコンポーネントを使用して、 コンポーネント セット とライターのコンポーネントを定義できます (「 コンポーネントの論理パス」を参照)。

コンポーネント組織の設定

コンポーネントの選択性 (バックアップの選択性と復元の選択性) とその論理パスを設定すると、ライターは、バックアップまたは復元操作に特定のコンポーネントを含めることを必須または省略可能にし、コンポーネントをグループ全体へのエントリ ポイントとして機能する 1 つの選択可能なコンポーネントを持つコンポーネント セットにグループ化できます。

これらのグループのメンバーシップによって、バックアップおよび復元操作中に使用されるコンポーネントが決まります。 "選択可能" を使用して、バックアップ操作に対して "戻る" を選択でき、復元操作用に復元を選択できる場合、開発者は次の点を理解する必要があります。

  • 特定のライターによって管理されているコンポーネントがバックアップされる場合、リクエスターは、選択可能な先祖を含まないすべての非選択コンポーネントをバックアップ コンポーネント ドキュメントへの論理パスに明示的に含め、それらのコンポーネントをグループとしてバックアップおよび復元する必要があります。
  • リクエスターには、バックアップおよび復元操作中に選択可能なコンポーネントをバックアップ コンポーネント ドキュメントに明示的に追加するオプションがあります。追加したら、コンポーネントをバックアップまたは復元する必要があります。
  • コンポーネントが選択可能な場合、コンポーネントとその すべてのサブコンポーネント (論理パスで定義) がコンポーネント セットを形成します。コンポーネント セットは、必要に応じてバックアップ操作と復元操作に参加できる 1 つのユニットとして扱うことができます。
  • リクエスターは、バックアップおよび復元操作中に、選択可能な先祖 (コンポーネント セット内のサブコンポーネント) を含む選択できないコンポーネントを、バックアップ コンポーネント ドキュメントに明示的に追加することはありません。 これらのコンポーネントは、選択可能な先祖が明示的に追加されている場合は 暗黙的に含める 必要があります。その場合は、バックアップまたは復元する必要があります (「 リクエスターによるコンポーネントの使用」を参照)。
  • 選択可能な先祖を持つ選択可能なコンポーネントは、まだ サブコンポーネント (コンポーネント セットのメンバー) であり、選択可能な先祖が操作に明示的に含まれている場合は暗黙的に含まれる場合があります。 この場合、その情報はバックアップ コンポーネント ドキュメントには追加されません。 選択可能な先祖が操作に含まれていない場合は、操作に含めるコンポーネントを明示的に選択できます。その場合、その情報はバックアップ コンポーネント ドキュメントに含まれます。
  • バックアップに暗黙的に含まれるサブコンポーネントは、選択可能な先祖の状態に関係なく、復元操作に明示的に含めることができます (復元が選択可能な場合)。 復元操作中に含まれる復元サブコンポーネントに対して選択可能な場合は、その情報がバックアップ コンポーネント ドキュメントに追加されている必要があります。
  • PrepareForBackup イベントと PreRestore イベントの生成前に、バックアップ コンポーネント ドキュメントにコンポーネントが明示的に追加されていないライターは、それ以上の VSS イベントを受信しません。

詳細については、「 選択可能性と論理パスの操作」を参照してください。

コンポーネントへのファイルの追加

コンポーネントには、次を含む ファイル セット の形式でファイル情報が含まれます。

  • コンポーネント内のファイルのルート ディレクトリ。
  • コンポーネント内のファイルのファイル仕様。
  • コンポーネントの指定が再帰的かどうかを示すフラグ。

読み込まれるファイルがデータ ファイルかログ ファイルかに関係なく、(データベース コンポーネントの場合は) コンポーネントの種類に応じて、ライターは IVssCreateWriterMetadata::AddFilesToFileGroupIVssCreateWriterMetadata::AddDatabaseFiles、または IVssCreateWriterMetadata::AddDatabaseLogFiles を呼び出してファイル セットを追加します。

これらの関数を使用する場合は、ファイル セットに追加するファイルを次のように指定する必要があります。

  • wszPath: これは、ファイル セットに追加するファイルを含むディレクトリへのパスです。 bRecursive パラメーターが true に設定されている場合、wszPath パラメーターは再帰的に走査するディレクトリの階層を指定し、空のディレクトリを含むすべてのディレクトリを再作成する必要があります。
  • wszFilespec: この文字列は、ファイル セットに追加する各ディレクトリ内のファイルを指定します。

たとえば、次のディレクトリ構造が存在するとします。

C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt C:\\Directory1\\Directory2\\File1.txt C:\\Directory1\\Directory2\\File2.txt C:\\Directory1\\Directory3\\

ライターで wszPath に "C:\Directory1"、wszFilespec に "File1.*"、bRecursivetrue を指定した場合、リクエスターには次のファイルを含める必要があります。

C:\\Directory1\\File1.txt C:\\Directory1\\Directory2\\File1.txt

ライターが代わりに wszPath に "C:\Directory1"、wszFilespec に "*"、bRecursivetrue を指定する場合、リクエスターは次のファイルを含める必要があります。

C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt C:\\Directory1\\Directory2\\File1.txt C:\\Directory1\\Directory2\\File2.txt

ライターが wszPath に "C:\Directory1"、wszFilespec に "*"、bRecursivefalse を指定する場合、リクエスターは次のファイルを含める必要があります。

C:\\Directory1\\File1.txt C:\\Directory1\\File2.txt

上記のすべての例では、ライターが bRecursivetrue を指定するたびに、空のディレクトリ C:\Directory1\Directory3\ を再作成する必要があります。

ファイル グループ コンポーネントに追加されたファイル セットの場合、現在ディスク上のファイルがライターが適切な場所または既定の場所と見なさない場合、ライターには代替パスを追加するオプションがあります。 このような場合、ファイル セットのパスの定義には、ファイルの通常の場所と、ファイルを復元する場所が含まれますが、代替パスにはバックアップするファイルの現在の場所が含まれます。

ファイル セット内のすべてのファイルは、バックアップ時に存在する必要があります。 要求者は、ファイル セットに記載されているすべてのファイルがバックアップに必要であり、ファイルが見つからない場合はバックアップに失敗すると想定する必要があります。 wszFilespec パラメーターに "*" を指定すると、0 個以上のファイルと一致する可能性があることに注意してください。

このようなライター メタデータ ドキュメント属性は、代替の場所マッピング、明示的に含まれるファイルと除外されたファイル、復元メソッドとして、コンポーネント レベルではなくライター レベルで設定されることに注意してください。 (詳細については、「 Writer Metadata Document の操作」を参照してください)。

バックアップおよび復元操作のコンポーネント定義

復元操作とバックアップ操作の両方で、必ずしも Identify イベントが生成され、バックアップと復元の両方について、同じ CSVsWriter::OnIdentify メソッドによって処理されます。

バックアップ操作中、要求者はライターの CSVsWriter::OnIdentify メソッドによって返される情報を使用して、システムに存在するライターを特定し、バックアップするファイルを決定します。

復元操作中に、ライターの CSVSWriter::OnIdentify イベントによって返される情報は、システム上に現在存在するライターの ID と状態を確立するためにのみ使用されます。復元中に生成されたファイル仕様情報は使用されません。 代わりに、バックアップ時に格納されたライター メタデータ ドキュメントを使用して、このデータを取得します。

バックアップ操作中に生成されると、ライター コンポーネント情報とその他のライター情報が保存され、復元操作をサポートするために取得されます。 通常、この情報を格納するのは要求者の責任です。