zip 归档适合什么场合
zip 是跨平台通用归档格式:Windows、macOS 与多数 Linux 发行版默认就能解开,适合把一堆文件交付给没有同类环境的人。它的短板在备份场景很关键:默认不保存 Linux 权限与属主,传统加密强度也有限,所以系统级备份仍应用 tar、rsync 或专用工具。
基本信息
| 适用平台 | Linux(Info-ZIP 包)、Windows 资源管理器、macOS 访达均可解开 |
|---|---|
| 常用参数 | -r 递归、-x 排除、-l 列清单、-d 指定解包目录、-q 静默 |
| 元数据限制 | 不保留 Linux 权限位与属主;符号链接需配合 -y 参数(安全上需谨慎) |
| 加密 | 传统 zip 加密强度有限,敏感交付建议用 gpg 或 7z 的强加密方案 |
典型使用场景
- 交付给客户或同事的文档与素材包:对方无需安装额外工具
- Windows 与 Linux 之间交换文件:避免 tar 在 Windows 上不便解压
- 网页资源包:把静态站点打包发给非技术同事
- 按需收集:把分散在多个目录的文件归拢成一个交付件
- 日志取证打包:把待分析日志集中成一个不可编辑的单件交付
打包与解包
打包与解包
zip -r site.zip /var/www/site -x "*.log" # 递归打包并排除日志
unzip -l site.zip # 查看清单,确认文件范围
unzip site.zip -d /tmp/restore # 解包到指定目录(不覆盖原路径)
# 分批追加到已有归档
zip -r site.zip ./extra-dir
# 需要更强加密时改用 gpg 包裹
zip -r site.zip /var/www/site && gpg -c site.zip打包与解包选项读法
| 选项 | 作用 | 注意点 |
|---|---|---|
| zip -r | 递归包含子目录 | 不写 -r 时子目录只留空目录项 |
| zip -x | 排除匹配项 | 模式需用引号包裹,避免被 shell 展开 |
| unzip -l | 只列清单不解包 | 交付前先看清单可避免打包范围出错 |
| unzip -d | 指定解包目标目录 | 不指定时会解到当前目录,容易覆盖同名文件 |
| unzip -o | 覆盖已有文件不再询问 | 脚本中使用要确认目标目录可被覆盖 |
zip 更适合文件交付而非系统级备份;完整备份请用 tar、rsync 或专用备份工具,需要权限与属主保真时尤其如此。
Windows 与 Linux 之间打包中文文件名时编码可能不一致:解压出现乱码时就该核对编码参数,避免文件被误认为损坏。