数据恢复工具概览:常用工具与选择原则

做数据恢复这些年,我经手过几百块故障盘。从机械硬盘的咔咔异响,到SSD的突然暴毙,再到SD卡被格式化后的绝望眼神……说实话,每次拿到盘,第一件事不是敲命令,而是想清楚:该用哪把刀。

今天咱们就聊聊三款我几乎天天用的工具:TestDisk、PhotoRec 和 ddrescue。它们各有各的脾气,用对了是神器,用错了……嗯,可能把最后那点数据也搭进去。

核心观点:没有万能工具,只有合适的场景。选工具之前,先搞清楚你的盘到底出了什么问题。

TestDisk:分区表修复的瑞士军刀

TestDisk 是我个人最依赖的工具之一。它主要干一件事——修复分区表。说白了,就是你的硬盘分区丢了、误删了、或者被病毒搞乱了,它能帮你把分区结构找回来。

我记得有一次,一个客户的移动硬盘插上后显示“未初始化”。里面是公司三年的财务数据。我用了 TestDisk 的 Analyse 功能,扫描了大概20分钟,就把丢失的 NTFS 分区找回来了。客户差点哭出来。

TestDisk 的核心功能

  • 修复引导扇区:MBR、GPT 损坏时,它能重建引导记录
  • 恢复删除的分区:分区被误删后,只要没被覆盖,大概率能找回
  • 修复分区表:分区表损坏导致磁盘无法识别
  • 重建 FAT/NTFS/ext4 引导扇区:文件系统元数据损坏时的救命稻草

我的习惯:用 TestDisk 之前,一定先用 dd 或 ddrescue 做个完整镜像。为什么?因为 TestDisk 会直接写盘,万一操作失误,原始数据就彻底没了。镜像在手,随便折腾。

TestDisk 的基本用法

# 1. 启动 TestDisk
testdisk /dev/sdb

# 2. 选择日志文件(一般选 Create)
# 3. 选择磁盘类型(Intel/EFI/Mac 等)
# 4. 选择分区表类型(Intel 对应 MBR,EFI GPT 对应 GPT)
# 5. 选择 Analyse 进行扫描
# 6. 找到丢失的分区后,按 P 预览文件
# 7. 确认无误后,选择 Write 写入分区表

这里有个坑:TestDisk 的界面是字符界面的,新手第一次看可能会懵。别慌,上下左右键加回车,基本能搞定。我刚开始用的时候也按错过,把分区表写到了空扇区上……还好有镜像备份。

PhotoRec:文件雕刻的终极武器

PhotoRec 和 TestDisk 是同一个作者,但它们的定位完全不同。TestDisk 修分区表,PhotoRec 则是直接扫描磁盘扇区,根据文件签名(File Signature)来恢复文件。

你想想看,如果分区表彻底坏了,或者磁盘被格式化了,TestDisk 可能也无能为力。但 PhotoRec 不管这些,它直接读原始扇区,找到文件头就开始往外拽数据。

PhotoRec 的适用场景

  • 格式化后的数据恢复:快速格式化后,文件系统被重建,但数据还在
  • 分区丢失且无法修复:分区表损坏严重,TestDisk 也救不回来
  • 特定文件类型恢复:支持超过 480 种文件格式(照片、文档、视频、压缩包等)
  • RAW 文件系统恢复:文件系统元数据完全损坏时

注意:PhotoRec 恢复出来的文件没有原始文件名和目录结构。它会按找到的顺序命名,比如 f1234567.jpg。如果你需要保留文件名和路径,PhotoRec 不是最佳选择。这时候可以考虑 R-Studio 或 UFS Explorer 这类商业工具。

PhotoRec 的基本用法

# 1. 启动 PhotoRec
photorec /dev/sdb

# 2. 选择磁盘和分区
# 3. 选择文件系统类型(一般选 Other 或对应类型)
# 4. 选择恢复文件的存放目录(不要放在源盘上!)
# 5. 选择要恢复的文件类型(默认全选)
# 6. 开始扫描,等待完成

我曾经用 PhotoRec 从一个被覆盖写过三次的 SD 卡里,找回了一组婚礼照片。虽然只恢复了60%左右,但新人已经感激涕零了。说实话,这种场景下,能找回多少算多少,别抱太高期望。

ddrescue:坏道盘的救星

ddrescue 是我最敬畏的工具。它不修分区,不恢复文件,它只做一件事——把数据从坏盘上尽可能多地拷贝出来。

为什么需要它?因为普通的 dd 命令遇到坏道就会卡死,或者直接报错退出。而 ddrescue 会跳过坏道,继续读后面的好扇区。它还会生成一个日志文件(mapfile),记录哪些扇区读成功了,哪些失败了。这样你可以反复尝试,直到把能读的都读出来。

ddrescue 的核心特性

特性 说明
坏道跳过 遇到坏道自动跳过,不会卡死
日志记录 mapfile 记录每个扇区的读取状态
多轮重试 第一轮读好扇区,后续轮次尝试坏扇区
反向读取 从磁盘尾部向前读,减少磁头磨损
断点续传 中断后可以继续,不会从头开始

ddrescue 的典型用法

# 第一轮:快速读取好扇区
ddrescue -d -r1 /dev/sdb /mnt/backup/disk.img /mnt/backup/disk.log

# 第二轮:尝试读取坏扇区(反向读取,减少磁头损伤)
ddrescue -d -r3 -R /dev/sdb /mnt/backup/disk.img /mnt/backup/disk.log

# 第三轮:直接读取坏扇区(不跳过,但风险较高)
ddrescue -d -r1 -b 512 /dev/sdb /mnt/backup/disk.img /mnt/backup/disk.log

我的经验:对于机械硬盘,第一轮用 -r1 快速过一遍,把好扇区都读出来。然后断电让盘休息半小时。第二轮用 -r3 -R 反向读,这时候磁头已经不在原来的位置了,有些坏道反而能读出来。第三轮……看运气吧,别抱太大希望。

工具选择原则:场景决定一切

说了这么多,到底该用哪个?我总结了一个简单的选择逻辑,你照着走就行。

数据恢复工具选择决策流程 故障磁盘 分区表是否损坏? 是 否 TestDisk 修复分区表 修复后能否访问数据? 能 不能 数据恢复成功 PhotoRec 文件雕刻 PhotoRec 文件雕刻 ddrescue 镜像备份 有坏道时,先用 ddrescue 做镜像,再对镜像操作

我的选择原则

  1. 先判断物理状态:如果磁盘有异响、卡顿、SMART 报错,先别急着恢复数据。用 ddrescue 做镜像,然后对镜像操作。这是铁律。
  2. 分区表问题优先用 TestDisk:如果磁盘能被识别但分区丢失,TestDisk 是第一选择。速度快,效果好。
  3. 格式化或分区损坏严重用 PhotoRec:如果 TestDisk 搞不定,或者磁盘已经被格式化,PhotoRec 是最后的希望。
  4. 商业工具做补充:如果需要保留文件名和目录结构,或者恢复数据库、邮件等复杂格式,我会用 R-Studio 或 UFS Explorer。它们收费,但确实好用。

避坑指南:我曾经犯过一个错误——在坏盘上直接跑 PhotoRec。结果因为磁盘坏道太多,PhotoRec 反复读取坏扇区,导致磁头进一步损坏,最后连 ddrescue 都救不回来了。记住:有坏道的盘,永远先做镜像,再操作镜像文件。

总结

这三款工具,我用了十年。TestDisk 修分区,PhotoRec 挖文件,ddrescue 保底做镜像。它们都是开源免费的,但功能一点不比商业工具差。

你可能会问:学了这些工具,是不是就能搞定所有数据恢复?说实话,不能。数据恢复是个经验活,工具只是手段。真正重要的是——判断故障类型,选择正确策略,然后冷静执行。

嗯,这一章就到这。记住我说的:先镜像,再操作。这是无数血泪换来的教训。