数据恢复工具概览:常用工具与选择原则
做数据恢复这些年,我经手过几百块故障盘。从机械硬盘的咔咔异响,到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 反向读,这时候磁头已经不在原来的位置了,有些坏道反而能读出来。第三轮……看运气吧,别抱太大希望。
工具选择原则:场景决定一切
说了这么多,到底该用哪个?我总结了一个简单的选择逻辑,你照着走就行。
我的选择原则
- 先判断物理状态:如果磁盘有异响、卡顿、SMART 报错,先别急着恢复数据。用 ddrescue 做镜像,然后对镜像操作。这是铁律。
- 分区表问题优先用 TestDisk:如果磁盘能被识别但分区丢失,TestDisk 是第一选择。速度快,效果好。
- 格式化或分区损坏严重用 PhotoRec:如果 TestDisk 搞不定,或者磁盘已经被格式化,PhotoRec 是最后的希望。
- 商业工具做补充:如果需要保留文件名和目录结构,或者恢复数据库、邮件等复杂格式,我会用 R-Studio 或 UFS Explorer。它们收费,但确实好用。
避坑指南:我曾经犯过一个错误——在坏盘上直接跑 PhotoRec。结果因为磁盘坏道太多,PhotoRec 反复读取坏扇区,导致磁头进一步损坏,最后连 ddrescue 都救不回来了。记住:有坏道的盘,永远先做镜像,再操作镜像文件。
总结
这三款工具,我用了十年。TestDisk 修分区,PhotoRec 挖文件,ddrescue 保底做镜像。它们都是开源免费的,但功能一点不比商业工具差。
你可能会问:学了这些工具,是不是就能搞定所有数据恢复?说实话,不能。数据恢复是个经验活,工具只是手段。真正重要的是——判断故障类型,选择正确策略,然后冷静执行。
嗯,这一章就到这。记住我说的:先镜像,再操作。这是无数血泪换来的教训。