电脑必备
部署包用tar.gz还是zip?我拿4台机器测了打包解包耗时和权限保留
83 0 13
部署包格式这事,之前一直没细想,zip 用顺手了就 zip。上周给客户发了个 tar.gz,对面运维说解出来文件权限全乱,我才回头系统测了一遍。
测试环境:4 台机器(Win11 22H2 x64 × 2,Ubuntu 22.04 × 2),同一个部署包,内容约 1.2GB,包含 3 万多个小文件和 500 个脚本。
测了三项:打包耗时、解包耗时、权限保留。
- 打包耗时:在 Win 上用 7-Zip 24.08 命令行,zip(Deflate)平均 48s,tar.gz(gzip -6)平均 52s。差距不大,但 zip 略快,因为多线程压缩支持更好。
- 解包耗时:zip 平均 12s,tar.gz 平均 15s。zip 快一截,尤其小文件多的时候。
- 权限保留:这是关键。zip 在跨平台时默认不保留 Unix 权限位,tar.gz 保留得很好。我在 Ubuntu 上解 zip,脚本的 755 全变成 644,还得手动 chmod +x。tar.gz 解出来权限原样。
结论:
- 如果部署目标是 Linux,包里带可执行脚本,优先 tar.gz。权限不对,后面全是坑。
- 如果只是传日志或数据文件,不涉及权限,zip 更快更省事,Win 上双击就能看。
- 别指望 zip 的 -X 或 --symlinks 能救,跨平台还是不稳。
踩坑细节:
Win 上打包 tar.gz 我用的 7-Zip 命令行:7z a -ttar -so archive.tar folder | 7z a -tgzip archive.tar.gz -si,能跑,但不如直接上 WSL 里 tar 稳。另外注意文件名编码,zip 默认 CP936,Linux 解出来中文文件名乱码,得加 -mcu=on 或者用 -mcu=off 看情况。tar.gz 没这问题。
问一句: 你们部署包里带 shell 脚本的时候,是坚持 tar.gz 还是用 zip 然后解压后统一 chmod?有没有人试过 zip 的 Unix 扩展字段在 Win 上打包能不能保留权限?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
