电脑必备
两个压缩包解压后文件对不上号,我对着文件头才找出原因
78 0 13
最近处理部署包时遇到个怪事:同一个目录下的两个压缩包,解压后文件顺序和文件名对不上号。折腾了一下午,把过程记下来,给遇到类似问题的兄弟提个醒。
环境:Win10 22H2,Win解压缩 3.2,7-Zip 22.01,两台机器(一台SSD,一台机械)。
现象:
- 压缩包A解压后,文件列表顺序和压缩包内顺序一致;压缩包B解压后,顺序全乱,部分文件名还变了。
- 用7-Zip解压同样的包,顺序正常。
排查步骤:
- 先怀疑是Win解压缩的排序逻辑问题,但对比了文件头(用
certutil -dump看前16字节),发现两个包的压缩算法不同:A是Deflate,B是LZMA。 - 拿7-Zip的命令行
7z l -slt看详情,B包的文件头里有额外的扩展字段,记录了原始路径和编码信息。 - 用Win解压缩解压B包时,它似乎忽略了这些扩展字段,直接按压缩块顺序输出,导致顺序错乱;文件名变化是因为编码识别问题(GBK vs UTF-8)。
结论:
- Win解压缩速度快是真的,但对非标准压缩包(尤其是带扩展字段的)兼容性不如7-Zip。
- 命令行党还是得备个7-Zip,至少排查问题时能看细节。
建议:
- 普通用户日常解压没问题,遇到顺序乱、文件名怪的情况,换7-Zip试试。
- 开发部署包最好统一用标准格式压缩,别用太偏的算法。
你们有没有遇到过解压后文件顺序和压缩包内不一致的情况?都是怎么定位的?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
