還原初始化概觀

在初始化 VSS 還原作業時,要求者必須擷取備份元件檔,以及備份作業期間建立和儲存的每個相關寫入器元資料檔案。 寫入器會在處理要求者產生的 識別事件 時,查詢其目前的狀態。 如需詳細資訊,請參閱 在 VSS 下處理還原的概觀

下表顯示初始化還原作業所需的動作和事件順序。

要求者動作 事件 寫入器動作
建立 IVssBackupComponents 介面、將它初始化以管理還原,以及載入儲存的要求者中繼資料 (請參閱 CreateVssBackupComponentsIVssBackupComponents::InitializeForRestore) 。
呼叫 CreateVssExriterMetadata 來建立 IVssEx,WriterMetadata 介面,並使用預存的寫入器中繼資料載入它們。
使用寫入器起始非同步連絡人 (請參閱 IVssBackupComponents::GatherWriterMetadata.) 識別 寫入器會開始支援還原的事件處理。 建立寫入器元資料檔案 (請參閱 使用寫入器元資料檔案CVssWriter::OnIdentifyIVssCreateWriterMetadata) 。
要求者會呼叫 IVssAsync來等候寫入器初始化。

 

還原初始化期間的要求者動作

在還原的初始化階段,要求者必須能夠存取預存的備份元件檔和所有寫入器元資料檔案。

視實作而定,這表示要求者需要掛接和可讀取備份媒體,或有一些其他存取預存中繼資料的機制可供使用。

要求者會使用預存的 XML 檔,其中包含執行備份之要求者的備份元件檔,以使用 IVssBackupComponents::InitializeForRestore 來初始化其備份元件檔。

如同備份期間的情況,備份元件檔沒有足夠的資訊可支援還原;因此,要求者需要存取備份期間儲存的寫入器元資料檔案 (請參閱 要求者) 使用元件

要求者會針對備份資料且現在要還原的每個寫入器呼叫 CreateVssEx,WriterMetadata 來擷取儲存的寫入器中繼資料。 此函式會為每個寫入 器建立 IVssEx,WriterMetadata 物件,並將寫入器的寫入器元資料檔案載入物件。

如同備份期間的情況,若要起始本身與系統寫入器之間的合作,要求者必須藉由呼叫IVssBackupComponents::GatherWriterMetadata來產生識別事件。 在GatherWriterMetadata完成之後,不需要呼叫IVssBackupComponents::GatherWriterStatus。 無法處理 Identify 事件的寫入器不會包含在提供 IVssBackupComponents::GetWriterMetadataCountIVssBackupComponents::GetWriterMetadata 傳回之中繼資料的寫入器清單中,以及 IVssBackupComponents::GetWriterMetadata (請參閱 判斷寫入器狀態) 。

如同備份作業,要求者必須查詢和剖析備份元件檔中的資訊,並將其與寫入器元資料檔案中的資料進行比較,以判斷哪些元件已備份,並選擇要還原的元件 (請參閱 準備還原) 概觀。 此外,要求者必須產生詳細清單,其中包含所選取要還原之備份媒體上檔案的相關資訊,以及還原檔案的方式和位置。 (請參閱 產生還原集.)

因此,某些備份應用程式可能會發現儲存在備份媒體上,其清單 (本身的優化格式,) 檔案及其相關聯的寫入器、元件、還原程式和位置資訊。 此清單可用來將寫入器元資料檔案的剖析和比較數量降至最低,以及支援還原所需的備份元件檔。

還原初始化期間的寫入器動作

就像在還原作業期間完成一樣,為了回應 Identify 事件,VSS 會呼叫每個寫入器的虛擬處理常式方法 CVssWriter::OnIdentify

請注意,目前要求者以外的應用程式 (例如,系統應用程式) 可以產生識別事件,而這些事件必須由寫入器處理。 此外,寫入器無法從 CVssWriter::OnIdentify 中判斷哪個應用程式已產生 Identify 事件。

假設寫入器可能會在處理還原作業時收到數個識別事件,寫入器不應該在 CVssWriter::OnIdentify 處理常式中設定狀態資訊。 相反地,他們必須使用與備份作業期間相同的演算法來建立寫入器元資料檔案, (請參閱 備份初始化期間的寫入器動作 以取得詳細資訊) 。