在 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 登錄機碼可用來指定備份應用程式不應該備份或還原的檔案和目錄名稱。 不過,它不會從陰影複製中排除這些檔案。 如需此登錄機碼的詳細資訊,請參閱 備份與還原的登錄機碼和值。