软件吧
登录注册账号
/posts/tar-gz-zip-4
电脑必备

部署包用tar.gz还是zip?我拿4台机器测了打包解包耗时和权限保留

码农小张 83 0 13

部署包格式这事,之前一直没细想,zip 用顺手了就 zip。上周给客户发了个 tar.gz,对面运维说解出来文件权限全乱,我才回头系统测了一遍。

测试环境:4 台机器(Win11 22H2 x64 × 2,Ubuntu 22.04 × 2),同一个部署包,内容约 1.2GB,包含 3 万多个小文件和 500 个脚本。

测了三项:打包耗时、解包耗时、权限保留。

  1. 打包耗时:在 Win 上用 7-Zip 24.08 命令行,zip(Deflate)平均 48s,tar.gz(gzip -6)平均 52s。差距不大,但 zip 略快,因为多线程压缩支持更好。
  2. 解包耗时:zip 平均 12s,tar.gz 平均 15s。zip 快一截,尤其小文件多的时候。
  3. 权限保留:这是关键。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 上打包能不能保留权限?

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

社区回应

0 Replies

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

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