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