昨天凌晨两点十七分,我把那块 2019 年买的西数蓝盘(WD10EZEX,1TB,那会儿还算靠谱的型号)插进硬盘底座,接上 MacBook,打开 Disk Drill 的试用版。扫描跑了四十分钟,预览窗口里跳出来的目录树缺了整整 47 个 .NEF 文件——正是我 2021 年秋天在青海拍的那批。旁边倒是一堆 2018 年的 JPEG 老老实实躺着,好像在嘲笑我当初为什么非要拍 RAW。我盯着屏幕,脑子里只有一个念头:所谓「恢复特定图库」,根本就不是恢复整个盘,而是跟文件系统的碎片化记录做一场极不对称的博弈。
先把事情说清楚。我找的是 2021 年 10 月 3 日到 10 月 9 日之间,用尼康 D750 拍的一批客片。卡是两张 64GB 的 SanDisk Extreme Pro,回北京后导进这块蓝盘,后来做了一次「清理」,误删了源文件夹。理论上,普通恢复软件扫一遍就能把被标记为删除的簇重新读出来。问题是,当我用 PhotoRec 扫完之后,导出的文件全变成了 f 开头的随机编号,EXIF 信息里拍摄时间全部显示为「0000:00:00 00:00:00」。也就是说,文件是回来了,但图库的「身份」没了。这还叫什么「恢复特定图库」?
我去查了尼康官方的 NEF 格式白皮书,又翻了几篇 2016 年左右的取证论文,比如 Richard Russon 和 Yuval Dror 关于 FAT32 碎片化恢复的研究。结论不复杂:如果文件在磁盘上被连续存储,恢复软件只要找到文件头(0x4D4D002A 的 TIFF 魔数)就能完整提取;但如果文件被切成好几段,散落在不同簇里,而文件系统又已经覆写了索引记录,那软件唯一能做的就是在整个盘里「盲搜」文件头,然后按估计的长度截断。截断的意思就是——你可能拿到一张 8MB 的 NEF,但它其实本该是 28MB,后半截没了,Lightroom 打开就是花屏。所谓「恢复特定图库」,焦点就在这里:你得在几百个残缺文件里,靠拍摄时间、镜头型号、甚至机身序列号去反推哪些碎片属于同一次拍摄。
那天晚上我给在杭州做数据取证的朋友老周打了电话。他让我别再用 GUI 软件反复扫,因为每扫一遍都可能往盘里写临时文件。他原话是:「你把盘挂到 Linux 下,用 ddrescue 先做个整盘镜像,原盘封存,所有恢复都在镜像上做。」我照做了,ddrescue 跑了两个半小时,生成了一个 931GB 的镜像文件。接着我装了个叫 Photorec 的命令行版本,加参数 -d 指定输出目录,又用了 exiftool 批量抽取元数据。这一步其实很关键,因为 GUI 软件默认会按扩展名猜测类型,而 NEF 和 TIFF 的魔数太像了,很多工具直接把 NEF 归到 TIFF 里去,恢复出来的文件后缀全是 .tif,Lightroom 根本不认。老周说他自己写过一个小脚本,专门从 TIFF IFD 结构里把尼康私有的 MakerNote 抠出来,那段代码一共 187 行,他发我的时候还附了一句「别外传」。
说到这里,我得插一句和工具无关但让我血压升高的事。我最初在搜索引擎里搜「恢复特定图库」,翻了三页,跳出来的全是各种「一键恢复」「免费版无限导出」的下载站,装了其中两个,第一个捆绑了 3 个浏览器主页劫持,第二个更离谱——安装过程中静默改了我的 DNS 设置。后来我是在一个叫 免费进入网站的浏览器 的页面里才找到关于磁盘镜像操作的正经讨论,那个站虽然名字起得随意,但底下评论区有人贴了 ddrescue 的完整命令,比大多数「数据恢复教程」靠谱得多。这事儿让我对「搜索即答案」这件事彻底祛魅:你搜「恢复特定图库」,得到的往往是营销,不是方法。
还有个细节值得写下来。那批青海客片里有一组是在茶卡盐湖拍的,傍晚七点二十分左右,光线特别好。我用 exiftool 的 -file:FileModifyDate 参数把所有候选文件的修改时间列出来,发现有几个残缺 NEF 的时间戳是「2021:10:05 19:18:44」,和原始拍摄序列对得上,但它们的大小只有 6.2MB 到 9.8MB 不等,正常 NEF 应该在 24MB 上下。这意味着什么?文件被截断了,但头部元数据还在。我把它们逐个用十六进制编辑器打开,对照 NEF 规范里的 IFD 偏移量手算,居然拼出了三张完整的——代价是花了整整一个下午。值不值?对我值,因为那是我那年唯一一次去青海。对别人,可能就不值了。这也是我想说的:「恢复特定图库」本质上是一种投入产出的判断,而不是一个技术按钮。
顺便提一句备份。这次事故之后我彻底改了自己的工作流:双卡同时记录(D750 本来就有双卡槽,我之前只插了一张),导入后立刻用 rsync 同步到 NAS,同时再往一块移动硬盘上拷一份,NAS 端开 btrfs 快照,保留 30 天。我甚至把 qq浏览器自动打开app 那段日子存下来的客户确认截图也归了档,因为很多客片交付之后,沟通记录和原始文件一样重要——你永远不知道哪天需要证明「这张图是什么时候拍的」。至于有些人推荐的「云盘自动备份」,我持保留意见,原因后面会单独写一篇。
写到这儿,我想把个人观点说清楚:我不相信任何宣称「一键恢复全部图库」的软件,也不推荐把恢复的希望押在单一工具上。 这个领域被营销话术污染得太厉害,大量产品把「扫描到」和「恢复完整」混为一谈,用户看到的预览图只是缩略缓存,真正的 RAW 文件可能早就碎了。要恢复特定图库,你得接受几个前提:第一,原盘要先做镜像,别在原盘上反复操作;第二,元数据比像素更值得抢救,因为像素丢了可以重拍,时间地点作者信息丢了就永远补不回来;第三,接受部分失败——47 个文件我最后只救回 31 个完整可用的,剩下 16 个要么截断要么彻底没了。那 16 个里面有一张是我个人最喜欢的盐湖倒影,丢了就是丢了。
还有件事得提。我在整理这批评测资料时,无意中看到一个叫「今晚精准一码」的页面链接(今晚精准一码),点进去发现是某种数据预测类站点,跟我做的图库恢复八竿子打不着,但它的页面结构居然被一些人拿来当「恢复工具推荐模板」抄,可见这个领域的搜索结果生态有多混乱。这也让我更坚定了一个判断:写「恢复特定图库」的人,首先得把话讲具体,讲清楚工具边界、硬件条件和失败概率,而不是甩一句「用某某软件就行」。
那天凌晨五点,我把救回来的 31 个 NEF 重新导入 Lightroom,建了个新目录叫「2021-QH-salvage」,然后做了最后一个动作:给每个文件补上 IPTC 里的「Creator」和「Copyright」字段,统一写「Jiang Wan / 2021」。这个动作花了我二十分钟,但它让这批文件重新获得了某种可追溯性。图库的「恢复」,归根结底是让文件重新回到一个有坐标、有时间、有归属的序列里去,而不是把一堆字节扔回硬盘。我凌晨七点关电脑的时候,天已经亮了,窗外是北京十一月少见的晴天。我知道还有 16 个文件躺在那块蓝盘的镜像里,等哪天技术或耐心够了再去碰——但至少,这个站点会继续把这些具体的过程记下来。