變更日誌記錄
當檔案、目錄和其他 NTFS 檔案系統物件新增、刪除和修改時,NTFS 檔案系統會在資料流程中輸入變更日誌記錄,針對電腦上的每個磁片區輸入一筆變更日誌記錄。 每個記錄都會指出變更的類型與變更的物件。 特定記錄資料流程開頭的位移稱為特定記錄的更新序號 (USN) 。 新記錄會附加至資料流程結尾。
NTFS 檔案系統可能會刪除舊記錄以節省空間。 如有需要,索引服務會藉由重新編制磁片區索引來復原,如同沒有變更日誌存在時一樣。
變更日誌只會記錄檔案變更的事實,以及變更 (的原因,例如寫入作業、截斷、延長、刪除等等) 。 它不會記錄足夠的資訊,以允許反向變更。
此外,相同檔案的多個變更可能會導致只有一個原因旗標新增至目前的記錄。 如果相同類型的變更多次發生,NTFS 檔案系統不會在第一次之後寫入變更的新記錄。 例如,數個沒有介入關閉且重新開啟作業的寫入作業只會產生一筆變更記錄,且原因旗標USN_REASON_DATA_OVERWRITE設定。
為了說明變更日誌的運作方式,假設使用者依下列順序存取檔案:
- 寫入檔案。
- 設定檔案的時間戳記。
- 寫入檔案。
- 截斷檔案。
- 寫入檔案。
- 關閉檔案。
在此情況下,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 記錄。