zip 是什么
zip 生成 .zip 压缩包,是跨平台交付最省心的格式:Windows 资源管理器原生支持解压,收件人不需要装任何工具。与 tar.gz 相比,它的取舍很明确:元数据弱,Unix 权限、属主只能部分保留;文件名编码由打包方决定,Windows 用 GBK 打包的中文名在 Linux 上容易乱码;传统加密方式强度很低。所以 zip 适合把文件交给使用 Windows 的客户,服务器内部部署与需要保留权限的归档仍以 tar.gz 为主。
基本信息
| 适用平台 | Linux/macOS 用 Info-ZIP 的 zip;Windows 用资源管理器或 7-Zip |
|---|---|
| 命令语法 | zip [选项] 包名.zip 文件或目录... |
| 常用选项 | -r 递归目录 -x 排除模式 -q 静默 -9 最高压缩 -j 不保留路径 -s 分卷 -e 传统加密(强度低) |
| 所属 | Info-ZIP |
| 权限说明 | 对输出目录需要写权限,读源文件需要读权限 |
典型使用场景
- 交付客户:对方使用 Windows,zip 是唯一不需要额外软件的选择
- 提交审核:部分平台与应用商店只接受 zip 格式的打包产物
- 文档导出:把一批报表、图片打成压缩包分发
- 大文件分发:用分卷把超过单文件上限的包拆开传输
- 源码快照:打包一份代码目录方便归档或转移
常用示例
常用示例
zip -r site-2026-10.zip site # 递归打包目录
zip -r app.zip app -x '*.log' -x '*/cache/*' # 排除日志与缓存
zip -q delivery.zip *.pdf # 静默打包
zip -9 -r archive.zip data # 最高压缩比
zip -r -s 100m big.zip bigdir # 分卷,每卷 100MB
zip -j flat.zip a/1.txt b/2.txt # 不保留目录层级
7z a -p -mhe=on secure.7z secret/ # 敏感交付改用 7z 的 AES-256zip 与 tar.gz 取舍
| 维度 | zip | tar.gz |
|---|---|---|
| 跨平台 | Windows 原生支持解压 | Windows 需额外软件 |
| 权限保留 | 只部分保留 Unix 属性 | 完整保留权限、属主、软链接 |
| 文件名编码 | 由打包方决定,跨平台易乱码 | 通常按 UTF-8 处理,工具行为一致 |
| 随机访问 | 中央目录在尾部,可单独解出某文件 | 流式格式,需顺序读取 |
| 典型用途 | 交付客户、跨平台分享 | 服务器部署、需保留权限的归档 |
-x 的排除模式要对整个路径匹配,模式里带路径片段时加引号防止 shell 提前展开,例如 '*/cache/*' 才能排除所有层级下的 cache 目录。
zip -e 使用的传统加密存在已知弱点,不适合传输敏感数据。需要加密交付时使用 7z 的 AES-256(-p 配合 -mhe=on 加密文件名)或 gpg 加密。