48小时救援记录TestDisk 分区恢复与 PhotoRec 文件找回实战手记【免费下载链接】testdiskTestDisk PhotoRec项目地址: https://gitcode.com/gh_mirrors/te/testdisk一次相机存储卡失灵让我把 TestDisk 与 PhotoRec 从听说过变成了离不开。这是一篇按时间线记录的实战手记前 6 小时怎么用 TestDisk 做分区恢复第 20 小时怎么靠 PhotoRec 做文件找回以及事后总结出的五条教训。适合正在经历数据丢失、且想自己动手解决问题的普通用户。事故档案分区表坏了数据并没有消失事情发生得很普通。周末整理照片把 SD 卡从相机里抽出来插进读卡器系统弹出提示此卷不包含可识别的文件系统。再看一眼资源管理器卡还在容量还在但里面空空如也。相机开机也提示请格式化存储卡。那一刻心跳漏了一拍。几百张原图没有备份。这里要先解释一个关键概念分区表损坏不等于数据消失。分区表可以理解成一本书的目录页——它记录着第几章在第几页。目录页被撕掉、被写乱书页本身还好好地躺在那里只是你找不到入口了。SD 卡的分区表坏了系统自然看不见里面的文件但照片数据大概率还在扇区里躺着。这正是一个典型场景分区表损坏修复属于 TestDisk 的主场。黄金第一步动手前的现场保护在开始任何修复之前先做一件事停止写入。不要格式化格式化等于把目录页撕掉再重新印刷、不要新建文件、不要用系统自带的修复功能反复读写。每一次写入都可能把原本还有机会找回的数据覆盖掉。如果你的设备还勉强能识别建议先做一份磁盘镜像之后的恢复操作都在镜像上进行。Linux 下一条命令即可dd if/dev/sdb of/tmp/sdcard.img bs4M statusprogress把/dev/sdb换成你的设备名dd会按扇区把整张卡原样复制成镜像文件。这一步是磁盘镜像数据恢复的常规操作——恢复过程本身是只读的但多一层镜像保护等于给自己留了后悔药。到这一步工具还没上场。先认识一下它们TestDisk 与 PhotoRec 是同一套开源套件中的两个程序遵循 GPL 许可完全免费覆盖 Windows、Linux、macOS、BSD 等主流平台。TestDisk 负责修目录页分区表、引导扇区、文件系统结构PhotoRec 负责在书页里逐行找文字文件内容级扫描。第6小时TestDisk 分区恢复把目录页重新拼出来镜像做好的当晚我开始用 TestDisk。它的界面是文本风格的没有花哨的图形但每一步都有清晰的提示新手跟着走完全没问题。核心流程就五步选择设备列出所有磁盘选中 SD 卡或它的镜像文件选择分区表类型普通 PC 基本选 IntelMBR也有 GPT、Mac、Sun 等选项选择 Analyse分析让 TestDisk 扫描磁盘上残留的分区信息执行 Quick Search快速搜索快速定位候选分区找到后可以浏览里面的文件目录来确认选择 Write写入把找到的正确分区表写回磁盘我当时的操作命令很简单sudo testdisk /dev/sdb十几分钟后Quick Search 找到了两个分区其中一个正是照片所在的分区浏览目录时看到了熟悉的照片文件夹。选择写入、重启读卡器——分区回来了。这个过程背后是 TestDisk 的看家本事它不依赖操作系统而是直接读取磁盘上的原始结构在分区表被破坏甚至被覆盖后通过扫描引导扇区、文件系统超级块等残留信息重建出分区表候选列表再由你确认哪个是正确的。值得多说一句TestDisk 不只是修分区表。它还支持修复引导扇区、重建 FAT/NTFS 的引导记录、把丢失的引导程序写回系统盘。常见的开机显示 Missing operating system这类启动问题很多时候就是它修好的。它支持 FAT、NTFS、ext2/3/4、HFS、JFS、XFS 等 20 多种文件系统覆盖面相当广。第20小时PhotoRec 文件恢复逐扇区找指纹分区回来了但事情没完。打开照片文件夹发现最近一次旅行拍的照片缺了将近三分之一——那部分文件正好落在被覆盖过的区域目录项损坏了系统认不出来。这就轮到第二个工具上场。PhotoRec 文件恢复的思路和 TestDisk 完全不同它完全无视文件系统直接对磁盘或镜像做逐扇区扫描靠文件签名每种格式开头固定的字节序列来识别和切割文件。这种技术叫 file carving文件雕刻即使整个分区表都丢了它照样能干活。sudo photorec /dev/sdb1运行后依次选择要扫描的分区、文件类型默认全选、以及恢复文件的保存目录——记住保存位置必须和源盘不是同一个物理设备。常见文件签名长这样这就是 PhotoRec 的识别指纹文件类型十六进制签名说明JPEG 图片FF D8 FF每张 JPEG 的开头标志PNG 图片89 50 4E 47PNG 的标准文件头PDF 文档25 50 44 46即 ASCII 的%PDFZIP 压缩包50 4B 03 04ZIP 家族通用文件头扫描持续了大概三个小时。结束后恢复目录里按扩展名分好了文件夹jpg/、raw/、mov/各归其位。那次运气不错找回的 200 多张照片里绝大多数能正常打开。整个项目支持480 多种文件扩展名、约 300 个文件家族从 JPEG、PNG 到 Office 文档、邮件、数据库文件都有覆盖。如果你更习惯图形界面套件里还带了 QPhotoRec基于 Qt 的版本同样的功能点鼠标就能操作。收尾校验结果以及不完美的真相恢复不等于验收。PhotoRec 找回的文件文件名是随机重编的因为原始文件名信息可能已不存在而且某些文件因为头部或尾部被覆盖会打不开。我的做法是把能打开的挑出来按内容重新命名归档打不开的单独放一个目录防止混进正常文件里造成混乱。也请对成功率有合理预期。以下情况恢复希望渺茫数据已被覆盖新文件写在了老数据的位置上神仙难救SSD 执行过 TRIM固态硬盘会主动清空被删数据所在的块签名也没得扫存在物理坏道扇区读不出来恢复工具也无能为力反复格式化每次格式化都是一次新写入所以尽快行动永远是第一原则。另外优先在镜像上操作既是保护现场也是给自己留退路——这也是前面强调 dd 镜像的原因。事故复盘五条写成清单的教训这次 48 小时的经验最终沉淀成五条每一条都对应着一次真实的踩坑备份要主动别等事故教育你。恢复是补救备份才是成本最低的方案发现问题后立刻停止写入这是性价比最高的抢救动作先镜像、后操作所有扫描和修复都在副本上进行别用不同软件反复扫描同一块盘每扫一遍都是风险先想清楚再用哪个恢复文件保存到另一块物理磁盘写回原盘等于二次伤害新手常见疑问速答TestDisk 和 PhotoRec 会往被恢复的盘里写东西吗不会。扫描和读取都是只读操作只有你在 TestDisk 里明确选择 Write 时才会写回分区表PhotoRec 则完全不写源盘。两个工具必须一起用吗不一定。分区丢了、盘不识别优先 TestDisk只是误删文件、文件系统还正常直接 PhotoRec 就行。两者互补但可以按需取用。免费开源意味着不安全吗恰恰相反GPL 协议下源码完全公开恢复逻辑可以被任何人审计。这也是它在取证行业被长期使用的原因之一。为什么有的文件恢复了却打不开文件签名找到了开头但中间或结尾被覆盖、或存得零散就会得到残缺文件。这类文件单独存放别删等以后有更好的镜像再试。资源与延伸阅读如果你想把工具装到自己电脑上最直接的方式是从源码编译。克隆项目并完成构建git clone https://gitcode.com/gh_mirrors/te/testdisk cd testdisk ./autogen.sh ./configure make sudo make install依赖方面核心是需要 libncurses文本界面其余如 jpeg、ewf、Qt 库都是可选的增强项详细说明写在项目根目录的INSTALL文件里。想深入了解实现可以看src/目录testdisk.c和photorec.c是两个主程序入口filegen.c是文件签名识别框架剩下三百多个file_*.c文件分别对应一种格式的识别逻辑很值得翻一翻。最后说回这次事故的结尾照片找回来了但我也明白了一件事——TestDisk 与 PhotoRec 是可靠的后备方案却永远不该替代备份本身。如果你正握着那块坏掉的存储设备别慌先停止写入按这篇文章的顺序从镜像做起如果一切顺利你会在恢复完成的那一刻感激自己没有在最慌乱的时候按下格式化按钮。【免费下载链接】testdiskTestDisk PhotoRec项目地址: https://gitcode.com/gh_mirrors/te/testdisk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考