
文件损坏了
最近痴迷适马的Foveon传感器,画质真是没得说。然而,昨天在windows上插入 SD 卡,用那个适马专用的spp软件传成jpg,结果突然卡死了,然后不认盘了。拔掉重新插,修复了一下卡,然后故障来了。再次进入文件夹,看到的是一个损坏的33k的文件。其他照片全没了。
于是用mac尝试也打不开。用磁盘恢复软件,重新恢复 .x3f文件,结果恢复的都不是白天拍的那些,而是再之前拍的。差点放弃,突然看到一个名为 FOUND.000 的文件夹和一堆 .CHK 文件创建日期刚好是磁盘崩溃的时间,文件大小也刚好是50m左右,基本断定就是适马原本的x3f了。
软件无法修复
把CHK文件直接修改后坠为.x3f,再使用spp尝试打开,会提示文件已经损坏无法打开。ai建议用图像转换软件,把x3f转换成tiff或者dng,在尝试了无数格式转换软件无果后,我发现手动十六进制修补才是成功率最高的方法。适马 X3F 文件本质上是一个容器,其关键的元数据索引就在文件末尾。
十六进制的外科手术,寻找 PROP 锚点
使用 Hex Fiend (Mac) 十六进制编辑器打开 .CHK:
在与正常x3f对比后发现,基本都有个规律,正常文件末尾都有PROP字样,这个字样对应的十六进制后面,再有7段十六进制就是结尾。从第八段开始往后,就都是无用的垃圾字符串,污染,全部删除后,x3f就恢复正常了。
于是批量处理了这批损坏的文件:
- 特征搜索:搜索字符串
PROP。 - 对齐切割:在搜到的最后一个
PROP的P字符后,它对应的十六进制,保留之后的 7 段字节。 - 切除肿瘤:将这 7 段字节之后的所有数据(通常是 Windows 修复过程中填充的
00,当然也有不是00的)全部删除。

批量恢复命令 (Mac Terminal)
完成了70多张十六进制的修补,需要将这些 类似FILE0001.CHK的副本 统一回归身份。在终端中进入该目录,运行:
Bash
# 自动切除多余后缀,统一改为 .x3f
for f in *CHK*; do mv "$f" "${f%%.*}.x3f"; done
总结:为什么我的照片变成了 .CHK?
1. 逻辑错误的“暴力修复” 当 SD 卡在读写过程中意外中断文件系统会产生微小的逻辑错误,常会自作主张运行 chkdsk(检查磁盘)。
2. chkdsk 但它并不认识 .X3F 这种特殊的结构,处于保护磁盘的目的,于是就强行把x3f封装成 .CHK 文件了。但是也不知道为啥,它给尾部增了一些没用的东西,就导致spp打不卡。
教训:如何避免悲剧再次发生?
这次经历让我总结出了一套降低风险的操作流程:
- 物理锁定(过去从来没用过):在读卡器插入电脑前,将 SD 卡侧面的 LOCK 拨杆推向锁定位置。这是防止 Windows 自作主张修改卡内数据。
- 先拷贝,后操作:永远复制到本地硬盘后再编辑,严禁直接在卡内编辑图片。
为啥一定要恢复这张卡的照片呢?因为这天拍的太阳雨,非常绚丽,促使我想尽办法恢复它啊。如果还有人遇到适马x3f文件损坏的,也许这篇记录对你有帮助。

