我知道文件分散地写入辅助存储介质的各个扇区。我发现了 SysInternals 的文件碎片整理工具
Contig
。如果文件没有写入磁盘上的连续块,这实际上似乎是对文件进行碎片整理。我不知道这是多么真实,因为我试图用这段代码来证明这一点:
https://github.com/zjxylc/FileOffsetOnDisk
我基本上创建了
c:\hello.txt
并在文件中用hi there
填充它。该文件显然小于 512 字节。我知道 MFT 记录不会扩展此文件,这意味着它是驻留的。也就是说,MFT 记录实际上将在记录中包含文件的数据,而不是提供指向它的指针。如果文件大于 512 字节,MFT 将指向该记录。我不知道它到底在哪里,因为它可能写满了整个磁盘。但是Contig
工具似乎可以对其进行碎片整理。当我为它检索 MFT 记录时,内容不在 MFT 记录中,但我也是阅读 MFT 记录的新手。
但是,
FileOffsetOnDisk
程序(来自 github)的输出列出了一个偏移量。当我使用 dd.exe
检索内容并在十六进制编辑器中查看时,文件的内容不存在。我想与一些专家一起验证FileOffsetOnDisk
程序是否确实正确地打印了文件的偏移量。如果不使用 Contig
,它有时会打印 2 个不同的扇区。当 Contig
在有问题的文件上执行,然后 FileOffsetOnDisk
在同一个文件上重新运行时,它显示 1 个扇区偏移量,证明它确实对文件进行了碎片整理,但我仍然无法获得正确的内容文件的。
这是我的
FileOffsetOnDisk
程序的输出(我的只是称为 fileondisk.exe
)以及我如何尝试使用 dd
命令查看文件本身。
如有任何帮助,我们将不胜感激。