这个原来是社团内训时用的材料,有可能有些内容不是特别准确或严谨..也不一定覆盖所有情形,请具体问题具体分析。

数据无价 谨慎操作

从重要的开始

在做任何数据恢复操作时,严禁向被恢复的硬盘写入任何数据!
在用恢复工具时,严禁将恢复后的文件保存到被恢复的硬盘!
对于启用 TRIM 的 SSD 上的数据,必须立刻断电。修理必须利用工厂工具读取,部分主控的工具在网上可以找到。在技术不足时切勿修理,此时应建议对方寻找专业公司服务。
应当在 Windows PE 或 Linux Live CD 中进行恢复,以避免临时文件、虚拟内存文件造成向硬盘写入,且应该禁用 Windows 的 TRIM 支持。
在执行数据恢复前,应首先明白:永远无法保证数据可以 100% 恢复,且实际上恢复的概率是很低的(特别是有 TRIM 的 SSD 上)!

原理与实践

数据恢复基于如下原理:数据不再显示在文件列表中可能只是被标记为隐藏。实际的文件数据有一定概率并没有被抹去。因此,可以用恢复工具找到这些散落在硬盘中的数据并恢复成完整的文件。常用的工具有 Recuva、DiskGenius(需要专业版)等。

下面以 Windows 7 及以上、NTFS 文件系统为前提,分情形讨论:

预备知识:NTFS 依赖一个叫做 MFT (Master File Table,主文件表) 的结构维护所有文件的信息。其中包括文件的名称 ($FILE_NAME)、路径,以及最重要的,文件在硬盘上的实际位置 ($DATA),等等。当然对于极小的文件,系统会把整个文件放在MFT里,达成优化空间使用的作用。
注意,文件可能是碎片化的,因此其可能是多个位置的数据拼接而成,因此以下的讨论隐含一个事实:恢复的数据可能不完整。
另一个结构 BitMap 用来维护文件系统中哪些区域已经被占用的信息。

文件丢失可能有如下情况(针对 HDD,对于 SSD 务必看完最后的信息):

  1. 文件被误删除。这种情形下 Windows 会将这个文件的 MFT 条目标记为“未分配”,并释放对应的 BitMap 标记。这样这些空间可以被重新利用。
    1. 最好的情况:MFT 仍没有被再利用,其指向数据没有被覆盖。此情况下工具将会在 MFT 表中发现这样的文件,且可以恢复文件路径及内容。
    2. 次好的情况:MFT 被再利用,其指向数据没有被覆盖。此情况下工具不可恢复文件名/路径,并且需要在整个分区中扫描文件。工具将用文件头/特征等发现文件。如果文件不是“常用”文件格式(DOCX、PDF 等),将无法恢复。由于没有完整的文件映射信息,当文件碎片化的时候,恢复的文件常是不完整的。
    3. 最坏的情况:文件实际数据被覆盖或文件本身就在MFT里(小文件):常规方法下文件不可恢复。
  2. 分区表/文件系统错误/损毁(如分区显示 RAW,或分区丢失)。这种情况下优先恢复分区表。不要急着用 chkdsk 等工具重建文件系统,更不要格式化分区。条件允许时应先做全盘镜像,在镜像上做重建、恢复操作。
    此类错误多在意外关机或分区误操作时发生,一般包括 MFT 错误等。很多情形下可能用前述数据恢复工具恢复。
  3. 误格式化。
    1. Windows 的快速格式化仅是覆盖 MFT 开头,文件表其实还没有被清空。因此此情况类似于 1.1。
    2. Windows 的普通格式化会清零整个分区,常规方法下文件不可恢复。
  4. 硬盘损毁(HDD 坏道/SSD 坏块等)。这一情况下硬盘状态不稳定,强烈建议先做全盘镜像,再在镜像下做恢复操作(除非有极重要的小文件,此时应该优先拷出这些文件)!这种情况下的数据恢复取决于损坏的位置。
    1. 仅无关的元数据损坏(分区表等):重建概率高,工具可以直接在重建后的文件系统读出文件,或类似 1.1 情形;
    2. MFT 损坏:类似 1.2 情形。
    3. 文件本身损坏:文件仅可部分恢复,或全部无法恢复。

重要:在支持 TRIM 的 SSD 上,Windows 会通知 SSD 被标记为删除的块,而 SSD 主控对于这些块将不进行实际读取,直接返回 0,且会在合适的时机(脏页量达到某阈值且处于闲时)将闪存上的数据擦除(GC 操作)。因此这样的 SSD 在发生数据丢失时,务必立刻断电以防止 GC 操作擦除数据。

由于主控不会返回被标记为删除的块的内容,普通数据恢复工具无法恢复出任何数据!当没有足够技术进行恢复的时候应该寻求专业恢复机构,且应知会机构将恢复的是一块有 TRIM 的 SSD,并向机构提供 SSD 详细型号。
市面上部分 SSD 的主控(特别是慧荣)的工厂工具已经泄漏到网上,因此我们可以利用这些工具禁用 GC(如果可能的话),并绕过主控的提前返回 0 的机制强制读闪存以读取数据。

https://www.ccleaner.com/recuva
https://www.diskgenius.cn/

https://flatcap.org/linux-ntfs/ntfs/index.html
https://www.memofixdatarecovery.com/blog/index.php/recovering-data-after-a-format/
https://www.quora.com/Is-it-possible-to-recover-lost-data-from-an-SSD-with-TRiM
https://new.qq.com/omn/20201127/20201127A061QG00.html


不想被自己的惰性打败。