三月十二号下午四点四十,我把那块 2014 年的西数蓝盘插进硬盘底座,指示灯闪了三下才稳住。屏幕上跳出来的第一个文件,是 2019 年 11 月 7 日的一张缩略图,文件名只剩「20191107_」加半截乱码。我盯着它看了大概十几秒,然后打开笔记本,写下了第一行字:从这半截文件名开始。
一、那块盘和半截文件名
我得先把背景交代清楚,不然接下来的每一步都会显得像在凑数。这块盘是我 2014 年买的,1TB,用来存从 2015 年到 2020 年间陆续整理的一批图库资料,数量大概在两万三千张上下。2021 年换电脑时我以为自己做了备份,实际上只备份了 2015 到 2018 那一段,2019 和 2020 两年整整缺了一块。三年多来我一直以为那批东西彻底没了,直到上个月整理旧物,从抽屉里翻出这块盘,插上电,它居然还转。转速不稳,但转。李工在我旁边说了一句「先别格式化,先扫」,这句话后来值回票价。
第一次扫盘的结果不乐观。 坏道 37 处,集中在 240GB 之后。软件给出的可读率是 71.4%。
问题在于,能读出来的是文件内容,读不出来的是它们之间的关系。图库资料不是一堆孤立的图片,它至少有四层结构:文件夹层级、文件名规则、索引文件、缩略图缓存。四层里断掉任意一层,剩下的都只是散件。我第一次恢复失败,就是因为我只盯着文件本身,把恢复当成了复制粘贴。那三天我做的最蠢的事,是用一个批量重命名工具把 1,412 个文件按修改时间重排了一遍,结果原有的序号线索全被覆盖,后来花了整整一个晚上才从另一份日志里把它们还原回来。这件事我写在这里,是想说明:一键恢复已删网站 这类思路在结构完整时确实省事,但结构已经碎了的时候,一键操作往往是把最后一点线索也一起按平。
二、索引头、缓存,以及一个笨办法
索引文件是在 3 月 13 日晚上找到的,大小 6.2MB,编码是 UTF-8 带 BOM。这个细节很要命:现代浏览器内核在读取本地文件时默认会吞掉 BOM 头,于是文件开头那段本应是版本标记的字符被吃掉了,解析器把它当成内容的一部分,整个结构就错位了。我试了三种主流内核,表现一致。最后是李工提醒我,用 qq浏览器在线打开网页版入口 去复现旧版的渲染行为,旧版对 BOM 的处理更宽容,那段版本标记终于露了出来,是个「v3.1-20191105」。有了这个版本号,我才敢确定索引的字段顺序,后面的一切才有了依据。
这个办法谈不上优雅。但恢复这件事,优雅往往是最后才轮到的东西。
缩略图缓存是另一条线索。我在浏览器缓存目录里找到了 89 张 320×240 的预览图,它们是当年浏览时留下的。分辨率低得几乎没法用,但每一张都带着原始文件的尺寸元数据。我用这 89 个尺寸去反查坏道区域里能读出的文件头,逐一对上了 89 个大图的位置。这个过程听起来机械,实际上极其耗神,因为尺寸重复的很多,1024×768 这种常见规格一口气能对上十几个候选,最后靠的是修改时间的毫秒位。我承认这部分有点运气成分。当时我用的入口是 免费打开网站的浏览器 的离线模式,缓存目录比常规位置深了两级,是翻了三遍才找到的。
三、命名规则与那三分之一
3 月 14 日上午,我在 四九图库资料中心 的公开资料里找到了 2019 年那批缩略图的命名规则,格式是「日期-序号-两位校验」。按理说这就该顺利了,但实际比对 1,412 条记录后,我发现有将近三分之一对不上。原因很朴素:当年录入的人把两位校验位写反了,前一位是序号校验,后一位是日期校验,写成了相反的顺序。这不是错误,是一种约定俗成的变体,只是没人写下来。我把这部分单独拉出来,按相反顺序重新校验,命中率立刻从 61% 提到 94%。剩下的 6%,是真的很早就丢了,我不打算硬凑。
94% 这个数字,是我这半个月里看到的最好看的数字。
层级结构是另一块拼图。重建到一半我发现目录少了两级,怎么都对不上。后来是拿 新老澳门香港正版图库 的旧目录结构做参照,比对命名习惯,反推出了那两级的名字。这一步没什么技术含量,纯粹是耐心活:把旧结构的命名逻辑抽出来,套到缺失的位置上,看哪个组合能让其余所有路径自洽。自洽的那一刻,整个目录树像合上了一样。我至今觉得这是整件事里最像解谜的部分,比任何工具都让人踏实。
四、逐条核验,以及一件我不打算改口的事
3 月 15 日到 17 日,我做的事情可以概括为「逐个确认」。总数 204 个可疑文件,我没有用批量脚本一把过,而是先按哈希分组,再按尺寸筛选,最后人工确认。这个顺序很重要,反过来做会浪费大量时间在重复项上。人工确认的阶段,我参考了 澳门0149图库查询 的检索口径,用它的分组方式去交叉验证,错判只有 3 个,都是极相似的连拍。这个结果我满意。顺带说一句,默认下载路径那一级目录名,因为 qq浏览器的qq文件桌面 在 2021 年前后改过一次命名,和我记忆里的差了两个字符,这是首次恢复失败最直接的原因,也是最容易被忽略的那种原因。
3 月 18 日 16 点 52 分,高清入口在浏览器里第一次完整加载。首屏 1.8 秒,缩略图全部命中,没有一张占位图。我把这个时间点记在本子上,画了个圈。从 打开49图库资料库入口 的旧书签点进去,页面已经改版,但路径参数里那个旧版 ID 还在,它和索引里的版本号对上了。那一瞬间我没什么激动的感觉,反而很平静,像是长途跋涉之后坐到地上,才发现腿早就酸了。
五、把过程写下来的理由
这篇文章写了很久,断断续续四天。疲惫是真的,值得也是真的。我不是技术出身,这些东西都是一边查一边试,很多步走得笨,比如为了看编码头专门装了个旧版浏览器,比如人工比对 204 个文件花了一个下午。但正因为笨,过程才可复述。我把失败的那三次、把重命名工具造成的麻烦、把 61% 到 94% 的那次修正,都留在里面了。如果这篇东西对谁有点用,那用处大概不在结论,而在这条走得不太直的路线本身。
最后一句:那份笔记我留着,十一页,没打算扔。