產生還原集
還原集是要還原的所有檔案清單,以及要還原到的位置。
如同產生備份檔案清單 (請參閱 產生備份組) 、決定要還原哪些檔案的演算法,以及哪些檔案必須依 寫入器實例繼續寫入器實例 ,以及根據每個寫入器實例的元件為基礎。
必須將備份媒體上的每一個檔案與管理它的元件產生關聯。 如果有任何) ,也必須取得管理元件的 還原方法,以及檔案的 還原目標 資訊及其 替代位置對應 (。
藉由檢查元件的備份和邏輯路徑的可選取性, (請參閱使用可選取性和邏輯路徑) ,要求者能夠判斷要還原之備份作業的元件結構。
建立備份的元件結構後,要求者就可以取得每個元件的 檔案集 資訊, (檔案規格、路徑和遞迴旗標) 。 然後,要求者可以產生還原集。
需要 部分檔案或 導向目標的 檔案會提供自己的詳細還原指示 (請參閱 非預設備份和還原位置) ,然後新增至還原集。
針對未涉及部分檔案作業的檔案產生還原集的一般機制,或 導向的目標 可能會執行下列動作:
取得備份媒體上的檔案清單,包括其原始路徑。
執行下列動作,以識別備份媒體上每個檔案的 寫入器類別 和元件:
針對每一個寫入器,在其所有元件上呼叫IVssExWriterMetadata::GetComponent,以 (IVssWMComponent) 取得元件資訊。
針對每個元件,根據呼叫IVssWMComponent::GetDatabaseLogFile 呼叫 IVssWMComponent::GetDatabaseFile、IVssW) MComponent::GetDatabaseFile 和 IVssWMComponent::GetDatabaseFile,以及IVssWMComponent::GetDatabaseLogFile,取得元件包含之每一組檔案的檔案描述 (項 (資訊。
比較檔案的名稱和路徑資訊,與包含在檔案描述元中路徑資訊所傳回之元件中每個檔案集 (IVssWMFiledesc::GetPath、IVssWMFiledesc::GetFiledesc::GetFiledesc::GetRecursive) 所傳回的檔案路徑資訊,判斷檔案是否為元件的一部分。
注意
您應該忽略從儲存的寫入器元資料檔案中找到之元件中的任何替代位置資訊 (,也就是 IVssWMFiledesc::GetAlternateLocation 不會傳回 Null) 。 此替代位置是 替代路徑,只會在備份期間使用。
取得備份媒體上每個檔案的替代對應資訊:
- 替代檔案對應會儲存在寫入器,而不是元件層級,並從IVssExriterMetadata::GetAlternateLocationMapping所傳回的物件IVssWMFiledesc取得。
- 您可以藉由透過IVssWMFiledesc::GetRecursive檢查檔案的路徑和檔案規格,以根據IVssExternerMetadata::GetAlternateLocationMapping所傳回的替代位置對應來檢查檔案的路徑和檔案規格是否有替代位置對應。 (如果備份期間使用了替代路徑,則應該在此檢查期間忽略該資訊來處理 restore.)
- 如果檔案和替代位置對應檔案描述項相符,您接著會使用 IVssWMFiledesc::GetAlternateLocation 方法,尋找 IVssWMFiledesc 物件所傳回的 IVssWMFiledesc 物件,該物件是由 IVssExternerMetadata::GetAlternateLocationMapping 來尋找可還原檔案的替代位置。
- 以此方式取得的替代位置對應不一定同意 IVssComponent::GetAlternateLocationMapping從備份元件檔傳回的對應。 只有在檔案使用替代位置對應時, IVssWMFiledesc::GetAlternateLocation 值才會是非空白值。
使用此檔案和元件資訊時,可以查詢備份元件檔,以取得每個檔案之還原目標、選項和新還原位置的相關資訊。 這項資訊可以與檔案、元件和替代位置的清單結合。
未受寫入器保護的檔案可以透過與傳統還原作業一致的方式來選取。
此時,要求者應該要有需要還原之所有檔案的清單,以及如何還原這些檔案的指示,並可以根據下列專案開始還原檔案:
- 是否要使用替代位置對應或原始檔案位置做為還原的目標,將取決於VSS_RESTORE_TARGET的目標位置和元件設定是否存在檔案,以及VSS_RESTOREMETHOD_ENUM (請參閱非預設備份和還原位置) 。
- 嘗試還原是否成功,取決於目標的存取權限、鎖定目標檔案的問題,以及與檔案還原相關的其他傳統問題。
- 呼叫 IVssBackupComponents::SetFileRestoreStatus,以在備份元件檔中保留指定寫入器實例的成功或失敗。 這可讓寫入器在處理 PostRestore 事件時存取訊號。
- 如果檔案還原至替代位置對應,要求者必須呼叫 IVssBackupComponents::AddAlternativeLocationMapping。 這可讓寫入器判斷其檔案是否已透過 IVssComponent::GetAlternateLocationMapping還原到替代位置。
- 要求者可能會發現將檔案還原至全新的位置時,可能會想要。 這是可接受的,但要求者必須使用 IVssBackupComponents::AddNewTarget 方法向寫入器指出此專案。