NTFS下的USN日志文件研究

Fsutil usn USN Journal 相当于 NTFS 的秘书,为他记录下改动的一切,并储存 […]

2019年7月22日

Fsutil usn

USN Journal 相当于 NTFS 的秘书,为他记录下改动的一切,并储存为 USN_RECORD 的格式。

更多的介绍请看微软的文档:

MSDN里关于Fsutil usn的介绍
Keeping an Eye on Your NTFS Drives: the Windows 2000 Change Journal Explained

fsutil_usn命令介绍

Fsutil:usn

主要由专业支持者使用。管理更新序列号 (USN) 会改变日志,该日志提供了永久的对卷中所有对文件做过修改的的记录。当添加、删除和修改文件、目录和其它 NTFS 对象时,NTFS 将记录输入 USN 更改日志中,计算机上每个卷都有一个更改日志。每个记录指定更改类型和所更改的对象。新的记录将添加到数据流的最后。

程序可以查询 USN 更改日志,从而确定对文件集的所有更改。USN 更改日志的效率比检查时间戳或注册文件的效率高。USN 更改日志可由“索引服务”、“文件复制服务 (FRS)”、“远程安装服务 (RIS)”和“远程存储”开启和使用。

语法

fsutil usn [createjournal] MaximumSize AllocationDelta VolumePathname

fsutil usn [deletejournal] flags VolumePathname

fsutil usn [enumdata] FileRef LowUsn HighUsn PathName

fsutil usn [queryjournal] VolumePathname

fsutil usn [readdata] PathName

参数

createjournal
创建 USN 更改日志。

m=MaximumSize
指定NTFS 分配给更改日志的最大空间(以字节表示)。

a=AllocationDelta
指定分配给更改日志尾部以及从更改日志起点删除的内存分配大小(以字节表示)。

VolumePathname
指定驱动器号(冒号分隔)、装入点或卷名。

deletejournal
删除或禁用活动的 USN 更改日志。

flags
/D:禁用活动的 USN 更改日志,并在禁用时返回 I/O 控制。
/N:禁用活动的 USN 更改日志,并在禁用后返回 I/O 控制。

VolumePathname
指定驱动器号(冒号分隔)、装入点或卷名。

enumdata
枚举并列出两个指定边界之间的更改日志入口。

FileRef
开始枚举的卷上的文件中的序数位置。

LowUsn
用于筛选需要返回的记录的 USN 值的下边界范围。只返回其最近更改日志 USN 的值在 LowUsn 和 HighUsn 成员值之间或等于其值的记录。

HighUsn
用于筛选需要返回的文件的 USN 值的上边界范围。

PathName
指定驱动器号(冒号分隔)、装入点或卷名。

queryjournal
查询卷的 USN 数据,以收集有关当前更改日志、记录和容量的信息。

volume pathname
指定驱动器号(冒号分隔)、装入点或卷名。

readdata
读取文件的 USN 数据。

PathName
指定驱动器号(冒号分隔)、装入点或卷名。

注释

使用 createjournal

如果卷上存在更改日志,则 createjournal 参数将更新更改日志的 MaximumSize 和 AllocationDelta 参数。这使得您可以增加具有活动日志所保留的记录数目,而不必禁用它。如果将 MaximumSize 和 AllocationDelta 指定为零,则系统会根据卷大小选择默认值。

使用m=MaximumSize

更改日志可以增大到大于该目标值,但会在下一个 NTFS 检查点处被截断,以使其小于该值。NTFS 会检查更改日志,并在其值超过 MaximumSize 和 AllocationDelta 之和时对其进行调整。在 NTFS 检查点,操作系统将记录写入 NTFS 日志文件中,这些记录允许 NTFS 确定恢复数据所需的处理。

使用a=AllocationDelta

更改日志可以增大到大于MaximumSize 和 AllocationDelta 调整之前的总数。

使用 deletejournal

删除或禁用活动日志是非常耗费时间的,因为系统必须访问主文件表 (MFT) 中的所有记录,并将最后的 USN 属性设为零。这个过程可能需要几分钟,并在需要时可能持续到系统重启之后。在此期间,不考虑更改日志是活动的或被禁用状态。在系统禁用日志时,不能访问日志,且所有日志操作都将返回错误。禁用活动日志时要特别小心,因为这可能对其它使用该日志的应用程序产生不良影响。

范例

要在驱动器 C 上创建 USN 更改日志,请键入:

fsutil usn createjournal m=1000 a=100 C:

要删除驱动器 C 上的活动 USN 更改日志,请键入:

fsutil usn deletejournal /D C:

要枚举并列出驱动器 C 上两个指定边界的更改日志入口,请键入:

fsutil usn enumdata 1 0 1 C:

要查询驱动器 C 上卷的 USN 数据,请键入:

fsutil usn queryjournal C:

要读取驱动器 C 上临时文件夹中文件的 USN 数据,请键入:

fsutil usn readdata C:\Temp\sample.txt

读取NTFS下的USN日志文件

打赏 0

共有 0 条评论