備份元件檔內容
備份元件檔是由 IVssBackupComponents 介面的實例所維護。 此介面也包含許多控制備份作業、操作陰影複製,以及查詢系統狀態的方法。 不過,並非所有檔的資訊都可以透過這個介面直接存取。
備份元件檔包含陣列資料:
- 備份或還原作業中明確包含哪些元件的相關資訊
- 預存元件和寫入器資訊的標記法
- 備份/復原作業的狀態資訊
雖然元件資訊同時可供要求者和寫入器使用,但只有寫入器可以存取狀態資訊。
元件包含資訊
備份元件檔包含要求者明確包含在備份和還原中的元件清單。 此清單包含下列專案:
明確包含 可選取的元件。
備份作業中包含這些檔案是由 IVssBackupComponents::AddComponents::AddComponent 和還原作業中的 IVssBackupComponents::SetSelectedForRestore表示。
備份子元件不可選取,但無法選取備份元件上階。
如果寫入器的任何元件要包含在作業中,則必須包含所有這些元件。 備份作業中包含這些檔案是由 IVssBackupComponents::AddComponents::AddComponent 和還原作業中的 IVssBackupComponents::SetSelectedForRestore表示。
元件會隱含地新增至備份 (子元件 ,) 可選取以進行還原 ,並明確新增至還原。
這些元件可以是可選取或不可選取的,但具有可選取的上階,用來隱含地選取它們以進行備份。 它們會由 IVssBackupComponents::AddRestoreSubcomponent新增至備份元件檔。
還原中隱含包含之元件的身分識別不會儲存在備份元件檔中。
VSS 可以存取元件包含的相關資訊:在 產生 PrepareForBackup 或 PreRestore 事件之後,還原或備份中未明確包含任何元件的寫入器不會收到 VSS 事件。
寫入器無法直接查詢此資訊。 這不是重大限制,因為根據設計,個別 VSS 寫入器不應該要求系統上其他寫入器狀態的詳細資訊,如上所述,沒有內含元件的寫入器不需要參與 VSS 作業。
要求者可以判斷哪些元件已明確包含在作業中。
IVssBackupComponents::GetWriterComponentsCount方法會傳回寫入器數目,其中包含儲存在備份元件檔中的元件資訊 (,而不是檔) 中的元件數目。
要求者會使用 IVssBackupComponents::GetWriterComponents來透過預存寫入器資訊編制索引,這會傳回 IVssWriterComponentsExt 介面的實例。 IVssWriterComponentsExt介面可讓要求者取得參與寫入器的寫入器類別和寫入器實例,以及存取其儲存在備份元件檔中之元件的相關資訊。
包含元件的相關資訊
備份元件檔的元件資料標記法 (不包含路徑和檔案規格資訊) ,這是透過 IVssComponent 介面的實例存取。
要求者和寫入器會以不同方式取得 IVssComponent 介面實例的存取權。
要求者會使用IVssBackupComponents::GetWriterComponents所傳回的IVssWriterComponentsExt介面實例,依寫入器檢查元件資料。
除了寫入器識別資訊之外, IVssWriterComponentsExt 介面還提供 IVssComponent 介面的實例陣列,每個選取的寫入器都包含元件。
如 備份元件檔生命週期中所述,寫入器可以在處理 PrepareForBackup、PrepareForSnapshot、PostSnapshot、BackupComplete、PreRestore 或 PostRestore 事件時,透過 IVssWriterComponents 介面存取相同的資訊。
IVssComponent 可讓寫入器和要求者取得下列資訊:
- 元件的名稱、類型和 邏輯路徑 (GetComponentName、 GetComponentType、 GetLogicalPath)
- 還原 目標 (IVssComponent::GetRestoreTarget)
- 如果在還原 GetAlternateLocationMapping (檔案時使用了替代位置, GetAlternateLocationMappingCount)
- 如果有任何 (GetNewTarget、 GetNewTargetCount) 的新目標資訊
- (GetPreRestoreFailureMsg、GetPostRestoreFailureMsg)
- 如果已針對定義元件集的備份元件選取 可 進行還原, (IsSelectedForRestore)
- 備份或還原是否成功 (GetBackupSucceeded、 GetFileRestoreStatus)
- IVssBackupComponents::SetBackupOptions 或IVssBackupComponents::SetRestoreOptions (GetBackupOptions、GetRestoreOptions)
- GetBackupMetadata) 、GetRestoreMetadata) 的任何寫入器特定 (元資料備份或還原中繼資料
- GetBackupStamp、GetPreviousBackupStamp) (時間戳記資訊
- 還原中明確包含之備份子元件的相關資訊, (GetRestoreSubcomponent、 GetRestoreSubcomponentCount)
不同于要求者,寫入器可以透過 IVssComponent 介面變更備份元件檔中的特定資訊:
- 如何還原元件,如還原目標 (IVssComponent::SetRestoreTarget)
- 寫入器特定的備份和還原中繼資料 (IVssComponent::SetBackupMetadata、 IVssComponent::SetRestoreMetadata)
- SetBackupStamp (時間戳記資訊)
- (SetPreRestoreFailureMsg、SetPostRestoreFailureMsg) 的還原前和後還原錯誤訊息
要求者狀態資訊
要求者會使用 IVssBackupComponents 介面,將備份或還原作業狀態的相關資訊插入備份元件檔中。 寫入器應用程式可以透過 CVssWriter 類別查詢此資訊。
儲存在備份元件檔中的狀態資訊包括下列各項:
備份的一般資訊
- 整體備份類型 (增量、差異或完整)
使用IVssBackupComponents::SetBackupState依要求者設定
還原的一般資訊
- 整體還原類型 (還原是透過複製或匯入)
使用IVssBackupComponents::SetRestoreState依要求者設定
支援檔案的相關資訊
- 部分檔案作業中特定元件所使用的範圍檔案位置
使用IVssBackupComponents::SetRangesFilePath依要求者設定
資訊的狀態
- 指出指定的寫入器元件是否成功備份
使用IVssBackupComponents::SetBackupSucceeded來設定要求者
Writer-Settable資訊
- 其中一個指定寫入器元件的其他備份規格
使用IVssComponent::SetBackupMetadata設定作者
-
使用IVssComponent::SetPreRestoreFailureMsg或IVssComponent::SetPostRestoreFailureMsg設定作者
-
使用IVssComponent::GetPreRestoreFailureMsg或IVssComponent::GetPostRestoreFailureMsg擷取的寫入器和要求者