分区一夜之间消失了?TestDisk与PhotoRec免费数据恢复实战手记
【免费下载链接】testdiskTestDisk & PhotoRec项目地址: https://gitcode.com/gh_mirrors/te/testdisk
上个月的一个晚上,我把移动硬盘插上电脑,磁盘管理里赫然显示:原本三个分区变成了一大块"未分配"空间。里面存着我五年的照片、剪辑素材和毕业设计。
我做的第一件事不是乱点"修复",而是立刻把盘拔下来,然后请出了 TestDisk 和 PhotoRec 这套搭档。这对完全免费、开源、跨平台的数据恢复工具,最终帮我找回了几乎所有内容。今天这篇手记,就把我这次"救盘"过程中真正用到的思路和操作讲给你听。
先用两分钟搞懂:数据到底丢在哪一层
很多所谓"数据丢失",数据本身还在,丢的是描述数据的那张地图。
想象一块磁盘是一间巨大图书馆。分区表和引导扇区就是门口的索引柜,告诉你"哪个书架放着哪类书、从哪里开始"。文件系统则是书架上的编号标签,记录每本书的准确位置。
- TestDisk 修的是索引柜:重建损坏的 MBR/GPT 分区表、找回被误删的分区、修复启动扇区。索引修好了,书架原封不动,数据自然"回来"了。
- PhotoRec 完全不理索引:它拿着一份涵盖 480 多种文件扩展名(约 300 个文件家族)的"内容指纹"清单,直接在一页一页的原始字节里扫描匹配,把照片、文档、压缩包按内容特征一个个捞出来。
一句话总结两者的分工:TestDisk 负责"恢复访问入口",PhotoRec 负责"在废墟里翻找内容"。想清楚自己丢的是"地图"还是"书",工具就不会选错。
怎么选:三个真实场景对号入座
| 你遇到的情况 | 优先用谁 | 为什么 |
|---|---|---|
| 分区突然消失、变成未分配空间 | TestDisk | 典型的索引丢失,重建分区表即可 |
| 系统提示"需要格式化"或无法启动 | TestDisk | 多为引导扇区或分区表损坏 |
| 误删文件、格式化、重装系统后 | PhotoRec | 靠文件签名在空白区域里找内容 |
| 分区表坏了又急着找文件 | 先 TestDisk 后 PhotoRec | 先修入口,再从恢复的分区里拷文件 |
如果分不清自己属于哪类,就遵循一条铁律:先在别的盘上做一份磁盘镜像,再用镜像练手(后面会讲),这样无论选哪个工具都不会造成二次破坏。
让它跑起来的最短路径
最省事的方式是用系统自带的包管理器:
- Ubuntu / Debian:
sudo apt install testdisk - Fedora / RHEL:
sudo dnf install testdisk - macOS:
brew install testdisk - Windows:直接下载官方预编译的 exe,右键以管理员身份运行
想自己编译最新版,也很简单:
git clone https://gitcode.com/gh_mirrors/te/testdisk cd testdisk ./configure && make sudo make install装好后你会得到几个命令:testdisk、photorec、qphotorec(图形界面版)和fidentify(文件指纹识别小工具)。Linux 下记得用sudo运行,因为读取原始磁盘设备需要权限。
实战①:分区表被搞坏时,我用 TestDisk 这样找回来
那晚我就是先走的这条路线,操作全程其实只有四步:
- 运行
testdisk /log,选择出问题的移动硬盘; - 在分区表类型里选Intel(如果原来是 GPT,就选 EFI GPT),选错类型会找不到分区;
- 进入
[Analyse]→[Quick Search],程序会逐扇区扫描并列出找到的分区; - 关键一步:看到分区后不要急着按回车写入。先用
P键预览这个分区里的文件目录,确认内容还在,再返回选择[Write]把分区表写回磁盘。
那次扫描用了几分钟,三个分区全部出现,预览目录时照片文件夹历历在目。写回、重启,数据完好如初。整个过程 TestDisk 都会把细节写进testdisk.log,方便你事后核对。
实战②:格式化之后,PhotoRec 怎么把文件捞回来
另一回,同事误格式化了 U 盘。分区表还在,但内容索引没了,这时 TestDisk 帮不上忙,该上 PhotoRec。
# 把U盘内容恢复到 /tmp/recup 目录 sudo photorec /d /tmp/recup /dev/sdb交互式操作同样很简单:选盘 → 选择分区(也可以选"整个磁盘"或"仅未分配空间")→ 在File Opt里勾选要恢复的文件类型 → 指定目标目录 → 按C开始。
PhotoRec 会按文件类型把结果自动归类到recup_dir.1、recup_dir.2这样的文件夹里,比如jpg/、doc/、zip/,每个文件按f000001.jpg这种格式重新命名。扫描速度取决于磁盘大小,中途按Ctrl+C可以暂停,下次运行还能从断点继续,不需要重头再来。
实战③:稳妥派的标准动作——先镜像,再操作
如果你的盘很重要,或者已经出现了坏道,推荐先在健康的那台电脑上做一份镜像:
在 TestDisk 的[Advanced]菜单里选择[Image Creation],就能生成image.dd格式的完整镜像。之后所有扫描、预览、恢复操作都在镜像上进行:
# 直接用镜像文件当输入源,原盘全程不被碰 sudo testdisk /log image.dd sudo photorec /d /tmp/recup image.dd这是我在反复折腾中学到的最值钱的一课:任何恢复操作都可能覆盖原始数据,备份一份镜像,等于给自己留了后悔药。
动手前先躲开这三个坑
坑一:把恢复结果写回原盘。这是新手最高频的失误。恢复出的文件又存回同一块盘,很可能覆盖掉还没被找回来的数据。正确做法是准备另一块盘或分区存放结果,容量要预估够。
坑二:看到分区就立刻点写入。先按P预览,确认目录结构、文件数量和大小都对得上,再写入分区表。分区表写错虽然通常可以重来,但没必要冒险。
坑三:以为恢复的文件会保留原名。PhotoRec 靠内容指纹恢复,不读文件系统记录,所以文件名、文件夹结构都会丢失,恢复完需要手动整理。想要尽量保留原名的场景,应该优先考虑 TestDisk 配合原文件系统来复制文件。
够用之后,这些进阶功能值得一试
- QPhotoRec 图形界面:怕终端的话直接运行
qphotorec,同样是签名恢复,点点鼠标就能操作; - Brute-force 暴力扫描:在 PhotoRec 选项里开启,能救回更多碎片化文件,代价是慢,适合重要照片;
- fidentify:不恢复,只告诉你某个文件的真实类型,检查可疑文件很好用:
fidentify file.bin; - 自定义文件签名:在 PhotoRec 里可以添加自己的文件格式特征,私有格式也能扫;
- 命令行脚本化:
testdisk /list /dev/sdb这类非交互命令可以写进自动化脚本,定期巡检磁盘。
最后一步:趁数据还在,先动手练一次
回到开头那晚:如果当时我没有第一时间拔盘,而是继续读写那个"未分配"的盘,结果可能完全不同。数据恢复这件事,停手比动手更关键。
不用等灾难发生,现在就找个闲置的 U 盘或者虚拟机磁盘,往里面存点照片和文档,格式化、删掉,然后照着上面的步骤恢复一遍。这套工具完全免费,练熟之后,它就是你的数据保险。
下次真遇到分区消失,你会记得:先拔盘、再镜像、最后让 TestDisk 和 PhotoRec 上场。
【免费下载链接】testdiskTestDisk & PhotoRec项目地址: https://gitcode.com/gh_mirrors/te/testdisk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考