從陰影複製中排除檔案
在 Windows Vista 和 Windows Server 2008 和更新版本中,VSS 寫入器或應用程式的開發人員可以選擇從陰影複製中排除特定檔案。
陰影複製中的效能影響和陰影複製儲存區域 (也稱為「差異區域」) 陰影複製中的檔案使用方式,與建立陰影複製之後檔案內容中的變更量直接相關。 此外,從陰影複製中排除檔案可能會讓陰影複製建立變慢。
基於這些原因,只有在檔案很大時,才應該從陰影複製中排除檔案,並在一個陰影複製與下一個陰影複製之間進行重大變更,而且不需要備份。
您應該只排除屬於您應用程式的檔案。
如果陰影複製內容中設定了VSS_VOLSNAP_ATTR_NO_AUTORECOVERY旗標,這表示自動復原已停用,而且無法從陰影複製中排除任何檔案。 如需詳細資訊,請參閱 _VSS_VOLUME_SNAPSHOT_ATTRIBUTES 列舉。
使用 AddExcludeFilesFromSnapshot 方法
VSS 寫入器可以從陰影複製中排除檔案,如下所示:
- 呼叫 IVssCreateWriterMetadataEx::AddExcludeFilesFromSnapshot 方法來報告要排除的檔案。
- 在寫入器的 CVssWriter::OnPostSnapshot 方法中,從陰影複製中刪除檔案。
使用 FilesNotToSnapshot 登錄機碼
注意
FilesNotToSnapshot 登錄機碼僅供應用程式使用。 嘗試使用此登錄機碼的使用者會遇到下列限制:
- 無法在 Windows Server 上使用舊版功能建立的陰影複製中刪除檔案。
- 無法從共用資料夾陰影複製中刪除檔案。
- 它可以從使用 DiskShadow 公用程式建立的陰影複製中刪除檔案,但無法從使用 Vssadmin 公用程式所建立的陰影複製中刪除檔案。
- 檔案會盡可能以各種方式從陰影複製中刪除。 但這表示我們無法保證能將其刪除。
VSS 應用程式可以使用下列登錄機碼,在陰影複製建立期間從陰影複製中刪除檔案:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot
此登錄機碼針對可以排除其檔案的每個應用程式,都有REG_MULTI_SZ值。 檔案是由完整路徑所指定,可包含 * 萬用字元。
在所有情況下,如果沒有符合路徑字串的檔案,則會忽略專案。
將檔案新增至適當的登錄機碼值之後,陰影複製優化寫入器會在建立期間從陰影複製中刪除它。
如果無法指定完整路徑,也可以使用 $UserProfile$ 或 $AllVolumes$ 變數來隱含路徑。 例如:
- $UserProfile$\Directory\Subdirectory\FileName.*
- $AllVolumes$\TemporaryFiles\*.*
若要讓路徑遞迴,請將 「/s」 附加至結尾。 例如:
- $UserProfile$\Directory\Subdirectory\FileName.* /s
- $AllVolumes$\TemporaryFiles\*.* /s
$UserProfile$ 變數會導致路徑字串套用至電腦上的所有使用者設定檔。 使用者設定檔會藉由檢查下列登錄機碼來列舉:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
$AllVolumes$ 變數會使路徑字串套用至電腦上的所有陰影複本。 例如,假設路徑為 「$AllVolumes$\TemporaryFiles\*.* /s」,而電腦有三個磁片區:C:、D:和 E:。 如果 C: 和 E: 包含路徑 「\TemporaryFiles\」,而磁片區 D:只包含路徑 D:\Data\,則目錄樹狀目錄 C:\TemporaryFiles\ 會從 C:的陰影複本中刪除,而目錄樹狀目錄 E:\TemporaryFiles\ 會從 E:的陰影複本中刪除。
系統管理員可以使用下列登錄機碼來停用 $UserProfile$ 變數的擴充:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Vss\Settings
在此登錄機碼下,針對值名稱指定 DisableUserProfileExpansion、針對實數值型別指定REG_DWORD,以及值資料的非零值。
關於 FilesNotToBackup 登錄機碼
FilesNotToBackup登錄機碼可用來指定備份應用程式不應該備份或還原的檔案和目錄名稱。 不過,它不會從陰影複製中排除這些檔案。 如需此登錄機碼的詳細資訊,請參閱 備份和還原的登錄機碼和值。