软件吧
登录注册账号
/posts/winrar-ntfs
电脑必备

部署包校验总对不上,我查了半天是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,跨平台稳

结论:

  1. 跨平台分发部署包,别用WinRAR默认设置,要么关掉安全数据,要么直接换7-Zip命令行打包。
  2. 每次出包前跑一遍 7z l -slt 看属性列表,确认没有多余字段。
  3. 运维那边解压后加一步 ls -l 抽查属主,比事后排查省时间。

顺便说一句,WinRAR这功能本意是好的,Windows内部流转没问题,但涉及Linux服务器就纯属埋雷。我现在打包脚本里固定用7z a -tzip -mcu=off,跑了两百多次没再翻车。

问一下大伙:你们出跨平台部署包的时候,是统一用7-Zip命令行还是各有各的习惯?有没有人遇到过zip里带扩展属性导致校验失败的?

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

社区回应

1 Replies
深夜冲浪猫评论2026/11/4 18:35:05
WinRAR这默认勾选坑我也踩过……关掉重打就好了😅

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