mft_reference可以在不同时间对应两个不同的文件吗?

时间:2013-12-06 07:45:41

标签: ntfs ntfs-mft

我现在正在解析USN期刊文件,而我所知道的是,在USN期刊日志条目中,有一个 mft_reference 字段,它引用了相应的 FileRecord 在MFT表中。

一段时间后,USN Journal文件可能会积累大量文件更改记录,例如文件添加文件修改文件删除

如果我只是在USN Journal文件的最开头得到一个mft_reference号(64位整数)mft_refer_1,并在USN Journal文件的末尾得到另一个mft_reference号mft_refer_2,它们是相等的值mft_refer_1 == mft_refer_2我可以说两个日志记录是指定相同的文件吗?

我不太确定后来添加的 FileRecord 是否会替换前删除 FileRecord 的位置。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

我通过尝试“fsutil usn”工具来解决这个问题;

首先我们应该知道mft_refer是如何组成的: 0xAAAABBBBBBBBBBBB ,其中AAAA代表更新号,BBBBBBBBBBBB代表MFT表中的文件记录索引。

首先,我创建一个以“ daniel.txt ”命名的文本文档,并找出其mft_refer 0x00050000000c6c3f

然后我将其删除到回收站,其名称更改为“ $ R2QW90X.txt ”,但其mft_refer仍为 0x00050000000c6c3f

我从回收站中删除它,并创建另一个名为“ daniel.txt ”的文档,现在新文档的mft_refer是 0x00040000000c6c48

然后我创建了其他一些临时文件,其中一个文件占用了 0x00000000000c6c3f -th文件记录,其中包含更新的mft_refer 0x00060000000c6c3f

所以我的目标是文件记录空间在MFT中非常珍贵,如果先前的文件被彻底删除,那么文件记录空间将被回收用于新创建的文件,但是将更新“更新编号”字段mft_refer。

有关详细的实验过程,请参阅here