zip 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
zip——压缩与归档命令族(见压缩、归档与备份命令族)。要给别人(尤其 Windows 用户)传文件,zip 是兼容性最好的格式。
zip 把文件和目录压缩成一个 .zip 包。它同时做"归档+压缩",且 Windows/macOS 原生能解,是跨平台交换文件的首选格式。
一、基本用法
bash
zip app.zip file1 file2 # 把若干文件压成 app.zip
zip -r site.zip ./wwwroot # -r 递归打包整个目录
zip -q app.zip * # -q 静默(不显示每个文件进度)关键:打包目录必须加
-r(recursive),否则只压进目录名、里面文件没进去。zip 默认会显示每个文件的压缩进度,-q关掉更干净。
二、排除与加密
bash
zip -r app.zip . -x "*.log" "node_modules/*" # -x 排除指定模式
zip -e secret.zip confidential.txt # -e 加密(交互输密码)
zip -P pass123 archive.zip file # -P 明文密码(脚本用,不安全,密码会进历史)
-x排除临时文件/依赖目录能大幅减小体积。-e加密压缩包,适合传敏感文件;但别用-P 密码明文形式(密码会留在 shell 历史/进程列表),交互式-e更安全。
三、分卷(大包拆小)
bash
zip -s 100m -r split.zip bigdir/ # -s 每卷 100M,生成 split.z01、split.z02、split.zip
# 解压用:zip -s 0 split.zip --out full.zip 再 unzip full.zip要邮件发送或存 FAT32(单文件 ≤4G)时,分卷很有用。注意 zip 的分卷需先合并(
-s 0 --out)才能 unzip,不如 tar 分卷直观。
四、zip vs tar.gz vs 7z
| 格式 | 跨平台 | 压缩率 |
|---|---|---|
zip | 最好(Win/Mac 原生) | 中 |
tar.gz | 需装工具(Linux 原生) | 中 |
| 7z | 需装 7z | 高 |
给 Windows 用户传文件用 zip 最省心(对方双击就能开)。纯 Linux 内部备份常用
tar.gz/tar.zst;要极限压缩率用 7z。选 zip 主要是图"对方不用装任何东西"。
五、踩坑:中文/特殊文件名编码
bash
# 老 zip 默认不存 UTF-8 文件名,Windows 上解压中文名会乱码
zip -r --encoding utf-8 app.zip dir/ # 显式指定 UTF-8(取决于 zip 版本)含中文文件名的 zip 在跨系统解压时常乱码(尤其老 Windows)。尽量用较新 zip 并留意编码;或改用 tar.zst(Linux 间)规避。解压见 unzip。
六、实战:打包发布目录(排除噪音)
bash
zip -r -q release.zip ./dist -x "*.map" "*.source" # 发布前端构建产物一句话总结
zip = 跨平台兼容性最好的压缩包:-r 递归目录、-x 排除、-e 加密(别用 -P 明文);给 Windows 用户传文件首选。纯 Linux 间更常用 tar.gz;极限压缩率用 7z。解压看 unzip。