共用方式為


變更記錄

當檔案、目錄和其他NTFS檔案系統物件新增、刪除和修改時,NTFS 檔案系統會在數據流中輸入變更日誌記錄,計算機上每一個磁碟區各一筆。 每個記錄都會指出變更的類型和物件已變更。 特定記錄數據流開頭的位移稱為特定記錄的更新序號 (USN)。 新的記錄會附加至數據流結尾。

NTFS 檔案系統可能會刪除舊的記錄以節省空間。 如果已刪除所需的記錄,索引服務會藉由重新編製磁碟區索引來復原,就像沒有變更日誌存在時一樣。

變更日誌只會記錄檔案變更的事實,以及變更的原因(例如,寫入作業、截斷、延長、刪除等等)。 它無法記錄足夠的信息來允許反轉變更。

此外,相同檔案的多個變更可能會導致將一個原因旗標新增至目前記錄。 如果相同類型的變更多次發生,NTFS 檔案系統不會在第一次之後寫入變更的新記錄。 例如,數個沒有介入關閉和重新開啟作業的寫入作業只會產生一個變更記錄,且原因旗標USN_REASON_DATA_OVERWRITE設定。

為了說明變更日誌的運作方式,假設使用者依下列順序存取檔案:

  1. 寫入檔案。
  2. 設定檔案的時間戳。
  3. 寫入檔案。
  4. 截斷檔案。
  5. 寫入檔案。
  6. 關閉檔案。

在此情況下,NTFS 檔系統會在變更日誌中採取下列動作(其中 | 表示位 OR 作業)。

事件 NTFS 檔案系統動作
初始寫入作業
NTFS 檔系統會寫入新的 USN 記錄,並設定USN_REASON_DATA_OVERWRITE原因旗標。 如需可能原因旗標的詳細資訊,請參閱 USN_RECORD 結構。
檔案時間戳的設定
NTFS 文件系統會以旗標設定USN_REASON_DATA_OVERWRITE寫入新的 USN 記錄 |USN_REASON_BASIC_INFO_CHANGE。
第二個寫入作業
NTFS 檔案系統不會寫入新的 USN 記錄。 由於已為現有記錄設定USN_REASON_DATA_OVERWRITE,因此不會對記錄進行任何變更。
檔案截斷
NTFS 文件系統會以旗標設定USN_REASON_DATA_OVERWRITE寫入新的 USN 記錄 |USN_REASON_BASIC_INFO_CHANGE |USN_REASON_DATA_TRUNCATION。
第三個寫入作業
NTFS 檔案系統不會寫入新的 USN 記錄。 由於已為現有記錄設定USN_REASON_DATA_OVERWRITE,因此不會對記錄進行任何變更。
關閉作業
如果進行變更的使用者是唯一的檔案使用者,NTFS 文件系統會寫入具有下列旗標設定的新 USN 記錄:USN_REASON_DATA_OVERWRITE |USN_REASON_BASIC_INFO_CHANGE |USN_REASON_DATA_TRUNCATION |USN_REASON_CLOSE。

變更日誌會在檔案的第一個開頭和最後一個結尾之間累積一系列記錄。 每個記錄都有新的原因旗標集,表示已發生新類型的變更。 記錄序列會提供檔案的部分歷程記錄。 檔案關閉時建立的最後一筆記錄會新增USN_REASON_CLOSE旗標。 此記錄代表檔案變更的摘要,但與先前的記錄不同,不會指出變更的順序。

要存取和變更檔案的下一個用戶會產生具有單一原因旗標的新 USN 記錄。