电脑必备
部署包里藏了个同名文件,解压顺序不同结果完全两样,我测了才知道
12 0 9
上周发版,同一个部署包在测试环境和生产环境解压出来的配置不一样,排查了半天,发现是包里有两个同名文件,一个在 config/app.yml,另一个藏在 config/app.yml.bak/ 目录里(这目录是同事误操作打进去的)。
问题现象:
- Win解压缩 7.0.0 解出来,
app.yml是那个.bak目录里的旧版本 - 7-Zip 23.01 解出来,
app.yml是正常的 - 我用
unzip -l看了下,两个文件路径不同但最终落盘位置会冲突
我的排查步骤:
- 用
7z l -slt 部署包.zip列出所有条目,确认确实有两个app.yml相关路径 - 对比两个工具的「覆盖策略」设置,Win解压缩默认是「询问」,但命令行模式下直接跳过了
- 手动解压时指定
-aoa(覆盖所有)和-aos(跳过已存在),结果完全不同
结论:
- Win解压缩适合普通用户双击解压,图形界面会弹窗让你选,但命令行(
WinRAR.exe或它的 CLI)参数少、文档不全 - 7-Zip 的
-aoa/-aos/-aou覆盖策略清晰,脚本里可控 - 部署包这种场景,我建议用 7-Zip 命令行 + 显式覆盖参数,别依赖默认行为
给同行的提醒:
打包前用 7z l 包名.zip | sort | uniq -d 查一下重复文件名(路径归一化后),能避免这种坑。
你们用 Win解压缩 命令行解压时,有没有遇到过覆盖策略不生效的情况?具体是哪个版本?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
