电脑必备
部署包校验总对不上,我查了半天是WinRAR默认存了NTFS权限
107 1 13
上周发版,运维拿着我给的zip包解压后启动脚本报权限不足,我本地跑得好好的。第一反应是脚本路径写死了,查了半小时没毛病。
后来把两边的解压结果拉出来对账,才发现问题出在打包环节:我用的WinRAR 6.24,默认勾了「保存文件安全数据」,也就是把NTFS ACL一起塞进zip里。运维那边是Linux,unzip解出来直接忽略这些额外字段,但我们的启动脚本会检查文件属主,一比对就炸了。
实测对比(同一份32MB部署包,Win10 22H2 / i5-8250U / SATA SSD):
- WinRAR 6.24 默认设置打包 → 解压后文件ACL带原机器SID,Linux下属主异常
- WinRAR 关掉「保存文件安全数据」重新打包 → 解压正常,md5和原包一致
- 7-Zip 23.01 打包(zip格式,-mcu=off)→ 同样不带ACL,跨平台稳
结论:
- 跨平台分发部署包,别用WinRAR默认设置,要么关掉安全数据,要么直接换7-Zip命令行打包。
- 每次出包前跑一遍
7z l -slt看属性列表,确认没有多余字段。 - 运维那边解压后加一步
ls -l抽查属主,比事后排查省时间。
顺便说一句,WinRAR这功能本意是好的,Windows内部流转没问题,但涉及Linux服务器就纯属埋雷。我现在打包脚本里固定用7z a -tzip -mcu=off,跑了两百多次没再翻车。
问一下大伙:你们出跨平台部署包的时候,是统一用7-Zip命令行还是各有各的习惯?有没有人遇到过zip里带扩展属性导致校验失败的?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
