我现在正在解析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 的位置。
提前谢谢!
答案 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