软件吧
登录注册账号
/posts/config-app-yml-bak
电脑必备

部署包里藏了个同名文件,解压顺序不同结果完全两样,我测了才知道

码农小张 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 看了下,两个文件路径不同但最终落盘位置会冲突

我的排查步骤:

  1. 用 7z l -slt 部署包.zip 列出所有条目,确认确实有两个 app.yml 相关路径
  2. 对比两个工具的「覆盖策略」设置,Win解压缩默认是「询问」,但命令行模式下直接跳过了
  3. 手动解压时指定 -aoa(覆盖所有)和 -aos(跳过已存在),结果完全不同

结论:

  • Win解压缩适合普通用户双击解压,图形界面会弹窗让你选,但命令行(WinRAR.exe 或它的 CLI)参数少、文档不全
  • 7-Zip 的 -aoa / -aos / -aou 覆盖策略清晰,脚本里可控
  • 部署包这种场景,我建议用 7-Zip 命令行 + 显式覆盖参数,别依赖默认行为

给同行的提醒:
打包前用 7z l 包名.zip | sort | uniq -d 查一下重复文件名(路径归一化后),能避免这种坑。

你们用 Win解压缩 命令行解压时,有没有遇到过覆盖策略不生效的情况?具体是哪个版本?

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。