檔案實際備份概觀

VSS 可讓要求者存取包含備份資料的磁片區陰影複製,以及將資料複製到備份媒體。 寫入器通常會在此程式期間繼續進行正常作業。 如需詳細資訊,請參閱 在 VSS 下處理備份的概觀

下表顯示備份檔案所需的動作和事件順序。

要求者動作 事件 寫入器動作
存取陰影複製磁片區上的檔案 (請參閱IVssBackupComponents::GetSnapshotPropertiesVSS_SNAPSHOT_PROP)
產生要備份的檔案清單,並將檔案資料複製到備份媒體。
使用 IVssBackupComponents::SetBackupSucceeded指出備份成功或失敗。
要求者表示備份已完成,方法是呼叫 IVssBackupComponents::BackupComplete BackupComplete 執行任何備份後清除 (請參閱 CVssWriter::OnBackupCompleteIVssWriterComponentsIVssComponent) 。
要求者會等候所有寫入者使用IVssAsync確認收到IVssBackupComponents::BackupComplete事件。 它也應該確認寫入器狀態 (請參閱 IVssBackupComponents::GatherWriterStatusIVssBackupComponents::GetWriterStatus) 。 要求者目前必須呼叫 GatherWriterStatus ,才能將寫入器會話設定為已完成狀態。 注意: 這只有在 Windows Server 2008 Service Pack 2 (SP2) 和更早版本時才需要。
將備份元件檔和每個寫入器元資料檔案儲存至 XML 檔,可寫入備份媒體 (請參閱 IVssBackupComponents::SaveAsXMLIVssExriterMetadata::SaveAsXML) 。

 

備份檔案期間的寫入器動作

陰影複製完成後,所備份系統上的所有 I/O 作業都應該能夠繼續,而不會中斷備份的完整性。 這是具有陰影複製功能的主要動機之一。

因此,如同在探索階段 (請參閱 備份探索階段 概觀) ,在實際備份檔案時,寫入器有幾個需求。

備份完成且要求者產生 BackupComplete 事件之後,VSS 會呼叫每個寫入器的 CVssWriter::OnBackupComplete 方法,預設只會傳回 TRUE的虛擬方法。 不過,寫入器可以覆寫預設實作,並採取這類動作,例如移除剩餘的暫存檔案,或使用呼叫它的IVssWriterComponents介面來檢查其每個包含的明確元件 (備份的狀態,以及擷取對應的IVssComponent物件來設定它們可能會定義) 的任何元件。 然後,寫入器可以呼叫 IVssComponent:GetBackupSucceeded來判斷備份成功或失敗。 只有在元件中所有明確包含的檔案,且所有隱含包含元件都已成功備份時,IVssComponent:GetBackupSucceeded所傳回的值才會是TRUE

呼叫 CVssWriter::OnBackupComplete 完成時,要求者應該呼叫 IVssBackupComponents::GatherWriterStatusIVssBackupComponents::GetWriterStatus (,讓每個寫入器) 一次。 寫入器會話狀態記憶體是有限的資源,寫入器最終必須重複使用會話狀態。 此步驟會將寫入器的備份會話狀態標示為已完成,並通知 VSS 此備份會話位置可由後續備份作業重複使用。

備份檔案期間的要求者動作

備份探索階段概觀中所述,在陰影複製完成之前,您不應該產生要備份的實際檔案清單。

對應至指定磁片區陰影複製的 裝置物件 ,可用來在陰影複製完成後存取陰影複製磁片區上的檔案。 裝置物件是從IVssBackupComponents::GetSnapshotProperties所傳回的 VSS_SNAPSHOT_PROP物件取得。 陰影複製集的每個陰影複製都會有自己的裝置物件。

接著會使用裝置物件和從元件寫入器元資料檔案規格取得的路徑,來選取要備份的檔案。 如需詳細資訊,請參閱 要求者存取陰影複製的資料

備份清單中將包含哪些檔案取決於特定備份的本質、備份的元件 可選取性,以及寫入器的邏輯路徑結構 (請參閱 使用備份) 的可選取性

除了元件中指定的檔案之外,指定的寫入器可能也會明確排除檔案。 不論選取哪些元件,都必須遵守檔案排除。

此外,如 備份探索階段概觀中所述,掛接的資料夾或重新分析點可以出現在陰影複製中,而且可以備份。 不過,無法在陰影複製的磁片區上周遊掛接的資料夾或重新分析點, (請參閱 使用掛接的資料夾和重新分析點) 。

如果IVssWMFiledesc::GetAlternateLocation所傳回的替代路徑不是空白,也應該小心。 替代路徑與 替代位置對應 不同,因為它只在備份期間使用,而替代位置對應只會在還原期間使用。

在此情況下,資料不會從其一般位置備份, (由 IVssWMFiledesc::GetPath) 表示,而是從 IVssWMFiledesc::GetAlternateLocation傳回的位置進行備份。 在還原時,檔案應該會傳回至其一般位置。 如需詳細資訊 ,請參閱非預設備份和還原位置

VSS 不會限制將資料備份到儲存媒體或該媒體選擇的實際機制。 不過,建議將每個 寫入器實例 之每個元件的檔案當做一個單位來處理。 如需產生備份檔案清單的最佳做法討論,請參閱 產生備份組

備份指定元件所管理之任何檔案的成功或失敗, (如果它定義元件集) 指定寫入器實例的子元件集,則應藉由呼叫IVssBackupComponents::SetBackupSucceeded,在備份元件檔中保留其子元件。 如果元件或元件集所管理的任何檔案無法備份,則表示整個元件會失敗。 應該一律記錄哪些檔案無法備份的確切資訊。

開發人員可能會發現將記錄儲存在備份的備份媒體上、其所屬的元件和元件集、其規格,以及其原始路徑。 儲存資訊,例如每個寫入器的元件定義也很有用。 這樣做可能會讓擷取作業更簡單。 不過,這類詳細資料會保留給要求者開發人員。

由於寫入器可以在處理要求者呼叫IVssBackupComponents::D oSnapshotSet所產生的PostSnapshot事件時修改備份元件檔,因此在非同步呼叫完成之前,不應該儲存備份元件檔。

雖然可能稍早進行,但這也是儲存寫入器元資料檔案的便利時間。

請務必使用 IVssBackupComponents::SaveAsXMLIVssExorterMetadata::SaveAsXML來保留備份元件檔和寫入器元資料檔案。 如果沒有,就無法在檔案還原期間使用 VSS。

除了儲存原始中繼資料之外,有些備份應用程式可能會發現將自己的檔案清單複本儲存成自己的優化格式 () ,以及其相關聯的寫入器、元件、還原程式和位置資訊,以便稍後擷取備份媒體。 這類清單可用來避免在還原期間剖析和比較寫入器元資料檔案和備份元件檔的某些剖析和比較。

正在備份的磁片區可能有不是由 VSS 寫入器管理的資料。 此資料可以從陰影複製的磁片區備份,而該磁片區會處於 損毀一致狀態。 如需詳細資訊,請參閱 沒有寫入器參與的備份