fsutil usn

管理更新序列号 (USN) 变更日志。 USN 变更日志用于持续性地记录对卷上的文件所做的所有更改。 当添加、删除和修改文件、目录和其他 NTFS 对象时,NTFS 将向 USN 变更日志中输入记录,每个 USN 变更日志对应于计算机上的一个卷。 每条记录都指明了变更的类型以及所更改的对象。 新记录将追加到流的末尾。

Syntax

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>

Parameters

Parameter Description
createjournal 创建 USN 变更日志。
m=<maxsize> 指定 NTFS 为变更日志分配的最大大小(以字节为单位)。
a=<allocationdelta> 指定添加到末尾并从变更日志开头移除的内存分配的大小(以字节为单位)。
<volumepath> 指定驱动器号(后跟冒号)。
deletejournal 删除或禁用活动的 USN 变更日志。

CAUTION: Deleting the change journal impacts the File Replication Service (FRS) and the Indexing Service, because it requires these services to perform a complete (and time-consuming) scan of the volume. 而这又会在重新扫描卷时,对 FRS SYSVOL 复制以及 DFS 备用链接之间的复制产生负面影响。

/d 禁用活动 USN 变更日志,并在禁用变更日志时返回输入/输出 (I/O) 控件。
/n 禁用活动 USN 变更日志,并仅在禁用变更日志后返回 I/O 控件。
enablerangetracking 为卷启用 USN 写入范围跟踪。
c=<chunk-size> 指定要在卷上跟踪的区块大小。
s=<file-size-threshold> 指定范围跟踪的文件大小阈值。
enumdata 枚举并列出两个指定边界之间的变更日志条目。
<fileref> 指定要开始枚举的卷上文件中的序号位置。
<lowUSN> 指定用于筛选所返回记录的 USN 值范围下限。 Only records whose last change journal USN is between or equal to the lowUSN and highUSN member values are returned.
<highUSN> 指定用于筛选所返回文件的 USN 值范围上限。
queryjournal 查询卷的 USN 数据以收集有关当前变更日志、其记录及容量的信息。
readdata 读取文件的 USN 数据。
<filename> Specifies the full path to the file, including the file name and extension For example: C:\documents\filename.txt.
readjournal 读取 USN 日志中的 USN 记录。
minver=<number> 要返回的 USN_RECORD 的最低主要版本。 默认值 = 2。
maxver=<number> 要返回的 USN_RECORD 的最高主要版本。 默认值 = 4。
startusn=<USN number> 要开始读取 USN 日志的 USN。 默认值 = 0。

Remarks

  • 程序可以查阅 USN 变更日志来确定对一组文件所做的所有修改。 USN 变更日志比检查时间戳或注册文件通知更高效。 索引服务、文件复制服务 (FRS)、远程安装服务 (RIS) 和远程存储已启用并使用 USN 变更日志。

  • If a change journal already exists on a volume, the createjournal parameter updates the change journal's maxsize and allocationdelta parameters. 此操作使你可以扩展活动日志保留的记录数,而无需将其禁用。

  • 变更日志可能会增大到大于此目标值,但变更日志在下一个 NTFS 检查点处被截断为小于此值。 NTFS examines the change journal and trims it when its size exceeds the value of maxsize plus the value of allocationdelta. 在 NTFS 检查点处,操作系统会将记录写入 NTFS 日志文件,使 NTFS 能够确定从故障中恢复所需进行的处理。

  • The change journal can grow to more than the sum of the values of maxsize and allocationdelta before being trimmed.

  • 删除或禁用活动变更日志非常耗时,因为系统必须访问主文件表 (MFT) 中的所有记录,并将最后一个 USN 属性设置为 0(零)。 此过程可能需要几分钟时间,并且可以在系统重启后继续(如果需要重启)。 在此过程中,变更日志不会被视为活动日志,也不会被禁用。 当系统禁用变更日志时,无法访问日志,并且所有日志操作都会返回错误。 禁用活动日志时,应格外小心,因为这会对使用该日志的其他应用程序产生负面影响。

Examples

若要在驱动器 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 文件夹中文件的 USN 数据,请键入:

fsutil usn readdata c:\temp\sample.txt

若要以特定起始 USN 读取 USN 日志,请键入:

fsutil usn readjournal startusn=0xF00