那台机器是 2019 年买的红米 Note 7,尾插有点松。我拿它当资料库的本地缓存盘,里面存了大约 2.7GB 的缩略图和索引分片。2 月 13 日那晚,恢复工具识别到 4,961 个文件,进度条走到 63% 的时候停住,日志最后一行写着 checksum mismatch at segment 0x3F。我截了图,存在一个叫 “fail-0213” 的文件夹里,到今天还没删。
先说结论性的东西,免得你翻到下面才看到重点:多数人嘴里说的「恢复失败」,其实不是数据没了,而是恢复流程里有一段缓存碎片校验通不过,工具就整个回滚了。这个判断我不打算含糊。工具不会告诉你它卡在哪一段,它只会给你一句「恢复失败,请重试」。
一、那天晚上我到底做了什么
我做的第一件事是换线。原装线用了六年,插上去要晃两下才有反应。
换了一根绿联的 C 口线,识别正常,但进度条还是停在 63%。我把日志导出成 txt,一共 1,142 行,翻到倒数第 17 行看到那个 checksum 报错。这一段对应的正是索引分片的第 63 片,每片 40KB。
如果有人告诉你「清一下缓存就好了」,那基本等于让牙疼的人多刷牙。清缓存会把本来就残缺的分片一起清掉,恢复工具失去参照物,失败率反而更高。
第二件事是核对备份。我翻出 2025 年 11 月 2 日在移动硬盘上留的一份备份,解压后对比文件数:硬盘上 4,912 个,手机上 4,961 个。差的 49 个是十一月之后新增的,也就是说备份不是最新的,但至少有 99% 是好的。这一步很关键,它决定了后面是「修复」还是「重建」。
二、失败原因我拆成了四类
1. 分片校验失败导致的整体回滚
这是最普遍的一类。恢复工具默认采用「全成或全不成」的策略,只要有一片校验不过,就放弃整批。我的 63% 就死在这里。解决办法是找到支持「跳过坏片、只恢复可读部分」的模式,日志里的 segment 编号就是入口。
2. 缩略图缓存的名字冲突
很多资料库应用的缩略图是按 hash 命名的,前八位相同的情况并不罕见。我在 2026 年 1 月 6 日做过一次小测试,用 300 张图模拟,撞了 4 次。撞了以后工具会把新文件当旧文件覆盖掉,表面看恢复成功,实际少了东西。
3. 权限和存储路径的双重错位
安卓 11 之后分区存储收紧,应用目录被挪到 Android/data/… 下面。恢复工具如果还按老路径去找,会得到「目录为空」的报错。这个错报很像数据丢失,其实只是没找对地方。相关入口的版本差异我也在 新版qq浏览器私密入口哪个版本 里记过一笔,路径变化是同一类问题。
4. 反复重试把坏片越搅越碎
这一条我要说得直白些:连续点「重试」是最糟的操作。每点一次,工具会重写一次临时索引,坏片被切成更小的碎片,可恢复的比例反而下降。我 2 月 13 日晚上点了大概 11 次,事后用另一台机器对比,可读片段从 87% 掉到 71%。这是我这次最大的操作失误。
三、我最后是怎么把东西捞回来的
最终方案是「先取后修」:先用只读模式把能读的分片整批导出,再拿十一月那份备份做差集,把缺的 49 个文件单独补。整个过程用了两个小时零七分钟,中途没有一次回滚。导出工具是开源的,我把它记在了 永不收费免费的网页软件 那篇里,方便以后复用。
导出之后还有一步不能省:逐张比对缩略图和原图的尺寸比。有 6 张图的缩略图是好的,原图是坏的,这种半损状态在缩略图预览里完全看不出来。我是用文件大小分布筛的,正常的 jpeg 不会小于 12KB,那 6 张都在 3KB 上下。
四、给后来者的几条硬建议
第一,别在失败后立刻重试,先导日志。日志里的 segment 编号是唯一线索。第二,恢复前先确认最新备份的日期,没有备份就先做只读导出。
第三,缩略图和原图要分开校验,别只看预览。第四,路径类报错先怀疑分区存储,不要一上来就怀疑数据没了。这几条我写进了自己的检查清单,每周更新一次。
顺便说一句,市面上很多「一键恢复」的页面,包括 网页版qq登录入口 这种被搜索引擎硬塞进结果里的东西,跟恢复本身毫无关系,看到就跳过。真正有用的信息往往藏在一行不起眼的报错里。
五、和这个站其他记录的连接
这次排查里用到的分片跳过思路,和我早前整理的 49原图资料库更新 是同一套逻辑。图库类应用的恢复,本质上都是「分片完整性 + 索引一致性」两件事,换哪个客户端都差不多。
更早的一篇 17图正版库资料库资料库恢复照片免费 里,我记录过照片恢复的权限坑,和这里的第三类原因可以对着看。至于工具选择,17图库正版资料库免费打开17图库软件 那篇列了几种只读导出的做法,我至今还在用第二种。
我不太喜欢「恢复失败原因」这种说法被包装成神秘的技术黑箱。它多数时候就是几段校验没对上,或者一条路径写错了。把日志读完,把备份日期对清楚,问题就露出一半了。
写到这儿,我忽然想起 2013 年在一台诺基亚 N81 上折腾内存卡,也是卡在某一段过不去,最后发现是卡槽氧化。十几年过去,报错换了英文,逻辑没怎么变。