fsutil usn

管理更新序列号 (USN) 变更日志。 USN 变更日志用于持续性地记录对卷上的文件所做的所有更改。 当添加、删除和修改文件、目录和其他 NTFS 对象时,NTFS 将向 USN 变更日志中输入记录,每个 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 变更日志比检查时间戳或注册文件通知更高效。 索引服务、文件复制服务 (FRS)、远程安装服务 (RIS) 和远程存储已启用并使用 USN 变更日志。

  • 如果卷上已存在变更日志,则 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 文件夹中文件的 USN 数据,请键入:

fsutil usn readdata c:\temp\sample.txt

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

fsutil usn readjournal startusn=0xF00