fsutil usn
管理更新序號 (USN) 變更日誌。 USN 變更日誌會提供對磁碟區上檔案所做之所有變更的持續記錄。 當新增、刪除和修改檔案、目錄和其他 NTFS 物件時,NTFS 會將記錄輸入 USN 變更日誌中,每個記錄對應電腦上的每個磁碟區。 每個記錄都會指出變更的類型與變更的物件。 新記錄會附加至資料流結尾。
語法
fsutil usn [createjournal] m=<maxsize> a=<allocationdelta> <volumepath>
fsutil usn [deletejournal] {/d | /n} <volumepath>
fsutil usn [enablerangetracking] <volumepath> [options]
fsutil usn [enumdata] <fileref> <lowUSN> <highUSN> <volumepath>
fsutil usn [queryjournal] <volumepath>
fsutil usn [readdata] <filename>
fsutil usn [readjournal] [c= <chunk-size> s=<file-size-threshold>] <volumepath>
參數
參數 | 描述 |
---|---|
createjournal | 建立 USN 變更日誌。 |
m=<maxsize> |
指定 NTFS 為變更日誌配置的大小上限 (以位元組為單位)。 |
a=<allocationdelta> |
指定新增至更改日誌結尾並從更改日誌開頭刪除的記憶體配置大小 (以位元組為單位)。 |
<volumepath> |
指定磁碟機號 (後面跟著冒號)。 |
deletejournal | 刪除或停用使用中的 USN 變更日誌。 注意:刪除變更日誌會影響檔案複寫服務 (FRS) 和索引服務,因為它需要這些服務對磁碟區執行完整 (且耗時) 的掃描。 這反過來又會對重新掃描磁碟區時,FRS SYSVOL 複製和 DFS 連結替代之間的複製產生負面影響。 |
/d | 停用使用中的 USN 變更日誌,並在停用變更日誌時傳回輸入/輸出 (I/O) 控制。 |
/n | 停用使用中的 USN 變更日誌,且只有在停用變更日誌之後,才會傳回 I/O 控制。 |
enablerangetracking | 啟用磁碟區的 USN 寫入範圍追蹤。 |
c=<chunk-size> |
指定要在磁碟區上追蹤的區塊大小。 |
s=<file-size-threshold> |
指定範圍追蹤的檔案大小臨界值。 |
enumdata | 列舉並列出兩個指定邊界之間的變更日誌項目。 |
<fileref> |
指定列舉開始之磁碟區中檔案的序數位置。 |
<lowUSN> |
指定用來篩選傳回之記錄的 USN 值範圍的下限。 只會傳回上次變更日誌 USN 介於或等於 lowUSN 和 highUSN 成員值的記錄。 |
<highUSN> |
指定用來篩選傳回之檔案的 USN 值範圍的上限。 |
queryjournal | 查詢磁碟區的 USN 資料,以收集目前變更日誌、其記錄及其磁碟區的相關資訊。 |
readdata | 讀取檔案的 USN 資料。 |
<filename> |
指定檔案的完整路徑,包括檔案名稱和副檔名,例如:C:\documents\filename.txt。 |
readjournal | 閱讀 USN 日誌中的 USN 記錄。 |
minver=<number> |
要傳回 USN_RECORD 的最小主要版本。 預設值 = 2。 |
maxver=<number> |
要傳回 USN_RECORD 的最大主要版本。 預設值 = 4。 |
startusn=<USN number> |
USN 開始閱讀 USN 日誌的來源。 預設值 = 0。 |
備註
程式可以參閱 USN 變更日誌,以判斷對一組檔案所做的所有修改。 USN 變更日誌比檢查時間戳記或註冊檔案通知更有效率。 USN 變更日誌是由索引服務、檔案複寫服務 (FRS)、遠端安裝服務 (RIS) 和遠端儲存體所啟用及使用。
如果磁碟區上已經有變更日誌,createjournal 參數會更新變更日誌的 maxsize 和 allocationdelta 參數。 這使您能夠擴充使用中日誌所維護的記錄數量,而不需要停用它。
變更日誌可以擴充到大於這個目標值,但變更日誌會在下一個 NTFS 檢查點截斷為小於這個值。 NTFS 會檢查變更日誌,並在其大小超過 maxsize 的值加上 allocationdelta 的值時加以修剪。 在 NTFS 檢查點,作業系統會將記錄寫入 NTFS 記錄檔,讓 NTFS 能夠判斷從故障中復原所需的處理。
變更日誌在修剪之前,可以擴充為超過 maxsize 和 allocationdelta 值的總和。
刪除或停用使用中的變更日誌非常耗時,因為系統必須存取主要檔案資料表 (MFT) 中的所有記錄,並將最後一個 USN 屬性設定為 0 (零)。 此程序可能需要幾分鐘的時間,如果需要重新啟動,則可以在系統重新啟動之後繼續。 在此程序中,變更日誌不會被視為使用中,也不會停用。 當系統停用日誌時,無法存取日誌,而且所有日誌作業都會傳回錯誤。 停用使用中的日誌時應該格外小心,因為它會對使用日誌的其他應用程式造成負面影響。
範例
若要在磁碟機 C 上建立 USN 變更日誌,請輸入:
fsutil usn createjournal m=1000 a=100 c:
若要刪除磁碟機 C 上使用中的 USN 變更日誌,請輸入:
fsutil usn deletejournal /d c:
若要使用指定的區塊大小和檔案大小臨界值啟用範圍追蹤,請輸入:
fsutil usn enablerangetracking c=16384 s=67108864 C:
若要列舉並列出磁碟機 C 上兩個指定邊界之間的變更日誌項目,請輸入:
fsutil usn enumdata 1 0 1 c:
若要查詢磁碟機 C 上磁碟區的 USN 資料,請輸入:
fsutil usn queryjournal c:
若要讀取磁碟機 C 上 \Temp folder 中檔案的 USN 資料,請輸入:
fsutil usn readdata c:\temp\sample.txt
若要閱讀具有特定開頭 USN 的 USN 日誌,請輸入:
fsutil usn readjournal startusn=0xF00