基本

基本

为什么数据恢复程序经常恢复没有原始名称/结构的文件?

例如,我使用 PhotoRec,我认为它是一款非常好的恢复应用程序,但它恢复找到的所有内容时都没有名称和结构。

这是为什么?我理解名称的“来源”是主文件表,其中存储了名称/结构/属性等。这是真的吗?

为了真正恢复结构和名称,是否必须保持 MFT 完好无损?

答案1

基本

有两种数据恢复程序:

  • 那些查看文件系统以寻找文件恢复线索的人
  • 使用签名的人

文件系统程序

前者会查看磁盘上的文件系统以获取有关要恢复的文件和文件夹的信息。它们可能会查看 FAT/MFT,但通常当文件丢失时,该信息也会丢失,因此这些程序通常会检查磁盘上的簇以查找目录。然后,它们将检查目录条目以识别标记为已删除的文件。如果指示的文件尚未被覆盖,则应该目录中有足够的数据(名称、起始簇和大小)来恢复文件。子目录也是如此:应该有足够的信息(名称、起始簇)来识别子目录并对其中的文件重复上述过程。

这种方法有两个主要缺点:

  • 这仅在文件和文件夹连续的也就是说,如果它们是碎片化的,那么程序只能恢复开始直到连续链的末尾,文件/文件夹的簇才被找到。它无法找到链中的下一个簇。
  • 它无法知道哪些文件最近被删除并需要恢复,因此它只会列出它找到的所有标记为已删除的文件。因此,它可能包含很久以前被删除并因此被覆盖的文件/文件夹。

特色项目

后一种数据恢复程序完全忽略文件系统,而是寻找文件类型。它通常包含一系列文件签名(例如,标题、幻数等),这些签名是不同类型文件的典型特征。然后,它会扫描磁盘,寻找这些字节模式,只要找到一个,它就会将该簇和多个后续簇添加为文件,然后显示文件列表。

这种方法有一系列不同的缺点:

  • 它没有关于文件的名称、位置、日期甚至大小的信息,因为它是根据原始文件内容而不是文件系统数据来查找这些信息的。
  • 因为它没有关于名称的信息,所以它会给它们起一个人为的名字,例如file0001file0002等等。
  • 因为它没有关于位置的信息,所以它会将它们全部转储到一个巨大的文件夹中(尽管有些可能会根据文件类型对它们进行排序)。
  • 因为它没有关于文件大小的信息,所以它会将其四舍五入到最接近的簇,从而在末尾添加 511 到 65,535 字节之间的垃圾。
  • 它可能会找到很久以前删除的旧文件,甚至是几乎相同但版本不同的文件。例如,如果您正在处理一个文件,并在每次修改后多次保存它,那么您可能会发现许多更改都是​​单独的文件,然后必须找出哪个是最新版本。
  • 与文件系统方法一样,它要求文件连续,因为它没有有关簇链的信息。

比较

这两种方法各有利弊,具体使用哪种方法取决于你的磁盘和文件。最好使用最后一个的程序每种类型以最大程度地提高您的成功率。这样,您将通过恢复最多的内容和元数据(文件名等)找到最多的文件。您可能需要进行一些比较和手动工作才能将正确的元数据复制到正确的内容,但这是您实现最大恢复的最佳选择。不利的一面是,使用多个程序会导致大量混乱和误报需要进行分类,因此由您来决定丢失文件的价值。

应用

为什么恢复程序经常恢复没有原始名称/结构的文件?

例如,我使用 PhotoRec,我认为它是一款非常好的恢复应用程序,但它恢复找到的所有内容时都没有名称和结构。

这是为什么?

因为PhotoRec 是一个签名类型的数据恢复程序。

我理解名称的“来源”是主文件表,其中存储了名称/结构/属性等。这是真的吗?要真正恢复结构和名称,MFT 是否必须保持完整?

是的,是的。

由于您所描述的原因,使用 NTFS 恢复已删除的文件通常比使用 FAT 更容易成功,但是 PhotoRec 是一个签名式程序,因此它不会引用 MFT 来获取有关文件/文件夹的元数据。

此外,除非你立即地停止使用包含已删除文件的磁盘并立即执行恢复,包含文件的簇和/或引用它们的 MFT 条目可能会被回收和覆盖。(Windows 有一个令人讨厌且相当令人困惑的习惯,就是立即神秘地覆盖已删除的文件。我曾多次在意外删除文件后按下重置按钮(以避免 Windows 在关机期间覆盖),然后仍然发现该文件已被覆盖。)

答案2

根据文件系统的不同,文件的名称和内容通常存储在不同的地方。名称和时间戳将与包含文件内容的一系列单独块的链接一起进入目录。当文件被删除时,保存内容的块将返回到可用空间,目录将被编辑以删除条目。取消删除程序可以发现最近释放的块,但目录条目已经消失。同样,具体情况取决于操作系统和文件系统,但我希望这能给你一个有用但大致的想法。

相关内容