備份元件檔是由 IVssBackupComponents 介面的實例所維護。 這個介面也包含許多方法來控制備份作業、作陰影複製,以及查詢系統狀態。 不過,並非所有文件的資訊都可以透過這個介面直接存取。
備份元件檔包含數位資料:
- 備份或還原作業中明確包含哪些元件的相關信息
- 預存元件和寫入器資訊的表示法
- 備份/復原作業的狀態資訊
雖然元件資訊同時可供要求者和寫入器使用,但只有寫入器可以存取狀態資訊。
元件包含資訊
備份元件檔包含要求者明確包含在備份和還原中的元件清單。 此清單包含下列專案:
明確包含可選取的元件。
備份作業中包含這些檔案的指示方式是 IVssBackupComponents::AddComponent,以及 IVssBackupComponents::SetSelectedForRestore還原作業。
備份子元件無法選取,但無法選取備份元件上階。
如果寫入器的任何元件要包含在作業中,則必須包含所有這些元件。 備份作業中包含這些檔案的指示方式是 IVssBackupComponents::AddComponent,以及 IVssBackupComponents::SetSelectedForRestore還原作業。
隱含新增至備份的元件(子元件),這些元件 可選取以進行還原,並明確新增至還原。
這些元件可以是可選取或不可選取的,但具有可選取的上階,可用來隱含地選取它們進行備份。 它們會 IVssBackupComponents::AddRestoreSubcomponent新增至備份元件檔。
還原中隱含包含之元件的身分識別不會儲存在備份元件檔中。
VSS 可以存取元件包含的相關信息:還原或備份中未明確包含任何元件的寫入器,在產生 PrepareForBackup 或 PreRestore 事件之後,不會收到 VSS 事件。
寫入器無法直接查詢這項資訊。 這不是一項重大限制,因為根據設計,個別 VSS 寫入器不應該要求系統上其他寫入器狀態的詳細資訊,如上所述,沒有包含元件的人員就不需要參與 VSS 作業。
要求者可以判斷作業中明確包含哪些元件。
IVssBackupComponents::GetWriterComponentsCount 方法會傳回寫入器數目,其中包含儲存在備份元件檔中的元件資訊(而不是檔中的元件數目)。
要求者會使用 IVssBackupComponents::GetWriterComponents來透過預存寫入器資訊編製索引,這會傳回 IVssWriterComponentsExt 介面的實例。 IVssWriterComponentsExt 介面可讓要求者取得 寫入器類別 和參與寫入器寫入器實例,以及存取其儲存在備份元件檔中之元件的相關信息。
包含元件的相關信息
備份元件檔的元件數據表示法(不包含路徑和檔案規格資訊),可透過 IVssComponent 介面的實例來存取。
要求者和寫入器會以不同方式取得 IVssComponent 介面實例的存取權。
要求者會使用 IVssWriterComponentsExt 傳回的 IVssWriterComponentsExt 介面實例,依寫入器檢查元件數據::GetWriterComponents。
除了寫入器識別資訊之外,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
由寫入器使用 CVssWriter::GetBackupType 擷取
還原的一般資訊
- 整體還原類型 (還原是透過複製或匯入)
使用 IVssBackupComponents::SetRestoreState
由寫入器使用 CVssWriter::GetRestoreType 擷取
支援檔案的相關信息
- 部分檔案作業中特定元件所使用的範圍檔案位置
使用 IVssBackupComponents::SetRangesFilePath
由寫入者(或要求者)使用 IVssComponent::GetPartialFile 擷取
信息的狀態
- 指出指定寫入器的其中一個元件是否已成功備份
使用 IVssBackupComponents::SetBackupSucceeded
由寫入器和要求者使用 IVssComponent::GetBackupSucceeded 擷取
Writer-Settable 資訊
- 指定寫入器元件之一的其他備份規格
使用 IVssComponent::SetBackupMetadata 寫入器設定
由寫入者和要求者使用 IVssComponent::GetBackupMetadata 擷取
-
由寫入器和要求者使用 IVssComponent::GetRestoreMetadata 擷取
-
使用 IVssComponent::SetBackupStamp 寫入器設定
-
由寫入器和要求者使用 IVssComponent::GetBackupStamp 擷取
-
使用 IVssBackupComponents::SetPreviousBackupStamp 來儲存並設定特定元件的要求者
-
由寫入器和要求者使用 IVssComponent::GetPreviousBackupStamp 擷取
-
使用 IVssComponent::SetPreRestoreFailureMsg 或 IVssComponent::SetPostRestoreFailureMsg
-
由寫入器和要求者使用 IVssComponent::GetPreRestoreFailureMsg 或 IVssComponent::GetPostRestoreFailureMsg 擷取