服务公告

服务公告 > Linux命令 > Ubuntu下文件的解压缩操作:常用zip和unzip

Ubuntu下文件的解压缩操作:常用zip和unzip

发布时间:2026-01-08 00:03

在 Ubuntu 的交付与运维场景里,ZIP 之所以常用,是因为它跨平台兼容、对接流程简单:研发打包、日志归档、配置下发、客户交付都能“一把梭”📦。下面按“可落地的标准操作”讲清楚 zip/unzip 的安装、压缩、校验、解压与避坑。


1) 安装(一次到位)✅

sudo apt update
sudo apt install -y zip unzip
  • sudo:用管理员权限执行(安装软件需要)。
  • apt update:刷新软件索引,避免“找不到包/版本旧”的问题。
  • apt install -y zip unzip:安装 zip(打包压缩)和 unzip(解包解压)。Ubuntu 主仓库提供的 unzip 属于 Info-ZIP 系列实现。 (Launchpad)

2) 推荐工作流(先看清,再落地)🔎

 
 
 
 
 
拿到/准备文件
unzip -l 列清单
unzip -t 做完整性测试
需要压缩?
zip 打包/排除/加密
unzip -d 指定目录解压
验证: unzip -t / zip -sf
权限/覆盖策略检查
  • 逻辑核心:先可视化清单与校验,再执行解压/覆盖,把不可控变成可控。

3) 压缩:zip 常用命令(生产可直接用)📦

3.1 压缩单个/多个文件

zip release.zip app.conf nginx.conf
  • zip:创建 ZIP 包。
  • release.zip:输出包名。
  • app.conf nginx.conf:多个文件可直接空格分隔(适合“交付一组配置”)。 (Ask Ubuntu)

3.2 压缩目录(最常见)

zip -r release.zip ./project/
  • -r:递归打包目录及子目录(不加会只打包目录名,内容不进包)。 (Linux Command Library)

3.3 追求更小体积(更高压缩等级)

zip -r -9 release.zip ./project/
  • -9:最高压缩比(更省空间,但更耗 CPU,适合“传输成本高/存储成本敏感”的场景)。 (Linux Command Library)

3.4 排除文件(日志/缓存别打进去)

zip -r release.zip ./project/ -x "*.log" "*.tmp"
  • -x:排除匹配模式的文件(典型:日志、临时文件、缓存)。 (Linux Command Library)
  • "*.log":用引号避免被 shell 提前展开,保证 zip 自己处理匹配。

3.5 增量更新(包已存在,只补最新)

zip -u release.zip app.conf
  • -u:更新/追加文件:文件不存在则新增;存在则用更新版本替换。适合“热修配置补丁”。 (Linux Command Library)

3.6 删除包内某个文件(修正交付内容)

zip -d release.zip project/debug.log
  • -d:从 ZIP 内移除指定条目(注意路径要与包内路径一致)。 (Linux Command Library)

3.7 加密(交付给第三方时常用)🔐

zip -e release.zip app.conf nginx.conf
  • -e:交互式输入密码(不会把密码明文留在命令行历史里)。 (Linux Command Library)
  • 实话实说:ZIP 传统加密强度有限;如果属于“合规/高敏交付”,建议把“压缩”和“加密”拆分成更强的加密方案,而不是把 zip 当保险箱(它更像文件快递箱)。 (Oracle Documentation)

4) 解压:unzip 常用命令(安全策略要明确)📂

4.1 先看包里有什么(避免解出一堆“意外”)

unzip -l release.zip

4.2 做完整性测试(上线前的“健康检查”)

unzip -t release.zip
  • -t:测试包内成员文件的完整性(比“直接解压再报错”更体面)。 (Oracle Documentation)

4.3 解压到指定目录(推荐做法)

unzip release.zip -d /opt/release/
  • -d /opt/release/:指定落盘目录;避免污染当前目录,也方便回滚与权限控制。 (Oracle Documentation)

4.4 覆盖策略:不覆盖 vs 强制覆盖(务必选对)⚠️

unzip -n release.zip -d /opt/release/
  • -n:从不覆盖已存在文件;存在就跳过,适合“只补新增文件”。 (Oracle Documentation)
unzip -o release.zip -d /opt/release/
  • -o:总是覆盖已存在文件且不询问;适合“明确要以包内容为准”的发布动作,但风险更高。 (Oracle Documentation)

4.5 只查看包内某个文件内容(不落盘)

unzip -p release.zip project/app.conf | head -n 50
  • -p:把文件内容输出到标准输出(stdout),不写入磁盘。 (Oracle Documentation)
  • |:管道,把前一个命令的输出交给后一个命令处理。
  • head -n 50:只看前 50 行,适合快速审计配置(这一步很“运营化”)。

已经是第一篇啦!

下一篇: 服务器路由命令有哪些常用技巧?