【Linux 】解压/压缩命令全解析:unzip、tar、gzip、bzip2、xz

Linux 解压/压缩命令全解析:unzip、tar、gzip、bzip2、xz

在 Linux 日常开发中,解压/压缩文件是高频操作,不同格式对应不同命令。本文系统梳理 unziptargzipbzip2xz 五大核心命令,包含参数说明、实操案例、速记技巧。

一、unzip:专解 .zip 格式

unzip 是 Linux 下处理 .zip 压缩包的专用命令,语法简单,适配跨平台的 zip 格式。

1. 核心参数

参数 全称(可选) 含义 优先级
-l --list 查看压缩包内容(不解压) 常用
-d --directory 指定解压目录 高频
-v --verbose 显示解压详细过程(文件大小/权限等) 常用
-q --quiet 静默解压(无任何输出) 常用
-o --overwrite 覆盖已有文件(无需确认) 实用
-n --never-overwrite 不覆盖已有文件 小众

2. 实操案例

bash 复制代码
# 案例1:基础解压(显示过程)
unzip -v software.zip

# 案例2:解压到指定目录(核心用法)
unzip project.zip -d /opt/workspace

# 案例3:静默覆盖解压(生产环境常用)
unzip -oq backup.zip -d /data/backup

# 案例4:仅查看压缩包内容(不解压)
unzip -l docs.zip

二、tar:打包/解压全能工具

tar 是 Linux 最核心的打包工具,本身仅"打包"(合并文件),结合参数可适配 .tar/.tar.gz/.tar.bz2/.tar.xz 等格式,是日常使用频率最高的命令。

1. 核心参数(区分大小写)

参数 含义 必/选 搭配场景
-c create(创建打包文件) 打包时用
-x extract(解压) 解压时用
-v verbose(显示过程) 可视化执行步骤
-f file(指定文件名) 必须紧跟文件名(放参数最后)
-z gzip(适配 .tar.gz) 压缩/解压 .tar.gz 用
-j bzip2(适配 .tar.bz2) 压缩/解压 .tar.bz2 用
-J xz(适配 .tar.xz) 压缩/解压 .tar.xz 用
-C directory(指定解压目录) 大写C,指定解压路径
-t list(查看内容) 不解压看压缩包内容

2. 解压实操案例

bash 复制代码
# 案例1:解压纯 .tar 包(仅打包未压缩)
tar -xf data.tar -C /home/user  # 静默解压到指定目录
tar -xvf data.tar               # 显示解压过程

# 案例2:解压 .tar.gz(最常用)
tar -zxvf app.tar.gz            # 显示过程解压
tar -zxf app.tar.gz -C /opt/app # 静默解压到指定目录

# 案例3:解压 .tar.bz2
tar -jxvf log.tar.bz2

# 案例4:解压 .tar.xz
tar -Jxvf video.tar.xz

# 案例5:查看压缩包内容(不解压)
tar -tvf app.tar.gz

3. 打包实操案例

bash 复制代码
# 案例1:仅打包(生成 .tar,无压缩)
tar -cvf docs.tar /home/user/docs  # 打包指定目录,显示过程
tar -cf backup.tar /var/log/syslog /etc/nginx/nginx.conf  # 打包多个文件,静默执行

# 案例2:打包+gzip 压缩(生成 .tar.gz,最常用)
tar -zcvf docs_2026.tar.gz /home/user/docs  # 打包并压缩指定目录
tar -zcf log.tar.gz /var/log  # 静默打包压缩,无输出

# 案例3:打包+bzip2 压缩(生成 .tar.bz2)
tar -jcvf db_backup.tar.bz2 /data/mysql/backup.sql  # 打包压缩单个大文件

# 案例4:打包+xz 压缩(生成 .tar.xz,高压缩率)
tar -Jcvf video.tar.xz /home/user/video/2026.mp4  # 打包压缩大视频文件

# 案例5:打包时去掉路径层级(解压后无嵌套目录)
tar -zcvf docs.tar.gz -C /home/user/docs .  # -C 指定目录,. 代表当前目录内容

4. 关键规则

  • -f 必须放在所有参数最后(如 tar -zxvf 正确,tar -zfxv 报错);
  • -c(打包)和 -x(解压)不能同时使用;
  • 去掉 -v 可静默执行,速度更快。

三、gzip:轻量压缩 .gz 单个文件

gzip 仅处理单个文件 (不支持目录),压缩速度快,解压后原 .gz 文件默认删除(加 -k 保留)。

1. 核心参数

参数 含义 例子
-d decompress(解压) gzip -d test.txt.gz
-k keep(保留原文件) gzip -k test.txt
-v verbose(显示压缩率) gzip -v test.txt
-1~-9 压缩级别(1最快/9压缩率最高,默认6) gzip -9 test.txt

2. 实操案例

bash 复制代码
# 案例1:压缩单个文件(保留原文件)
gzip -k large_log.txt  # 生成 large_log.txt.gz,保留原文件

# 案例2:解压 .gz 文件(保留压缩包)
gzip -dk large_log.txt.gz  # 解压为 large_log.txt,保留 .gz 文件

# 案例3:最高压缩率压缩
gzip -9 -k database.sql

四、bzip2:高压缩率 .bz2 单个文件

bzip2 用法与 gzip 完全通用,压缩率比 gzip 高,但速度稍慢,同样仅处理单个文件。

1. 核心参数(与 gzip 通用)

参数 含义 例子
-d 解压 bzip2 -d data.sql.bz2
-k 保留原文件 bzip2 -k data.sql
-v 显示压缩率 bzip2 -v data.sql
-1~-9 压缩级别(默认9) bzip2 -1 data.sql

2. 实操案例

bash 复制代码
# 案例1:压缩单个文件(保留原文件)
bzip2 -k report.pdf  # 生成 report.pdf.bz2,保留原文件

# 案例2:解压 .bz2 文件(保留压缩包)
bzip2 -dk report.pdf.bz2  # 解压为 report.pdf,保留 .bz2 文件

五、xz:超高压缩率 .xz 单个文件

xz 是压缩率最高的单文件压缩工具,速度最慢,适合备份大文件(如视频、数据库备份)。

1. 核心参数(与 gzip/bzip2 通用)

参数 含义 例子
-d 解压 xz -d video.mp4.xz
-k 保留原文件 xz -k video.mp4
-v 显示压缩详情 xz -v video.mp4
-0~-9 压缩级别(默认6) xz -9 video.mp4

2. 实操案例

bash 复制代码
# 案例1:压缩大文件(保留原文件)
xz -k backup_2026.sql  # 生成 backup_2026.sql.xz,保留原文件

# 案例2:解压 .xz 文件(保留压缩包)
xz -dk backup_2026.sql.xz  # 解压为 backup_2026.sql,保留 .xz 文件

六、常用速记

1. 解压速记

bash 复制代码
# zip 解压
unzip 文件名.zip -d 目标目录  # 解压到指定目录
unzip -l 文件名.zip           # 查看内容

# tar 解压(核心)
tar -xf 文件名.tar -C 目标目录        # .tar 解压到指定目录
tar -zxf 文件名.tar.gz -C 目标目录    # .tar.gz 解压到指定目录
tar -jxf 文件名.tar.bz2 -C 目标目录   # .tar.bz2 解压到指定目录
tar -Jxf 文件名.tar.xz -C 目标目录    # .tar.xz 解压到指定目录

# 单文件解压(保留原压缩包)
gzip -dk 文件名.gz
bzip2 -dk 文件名.bz2
xz -dk 文件名.xz

2. 打包/压缩速记

bash 复制代码
# tar 打包(核心)
tar -cf 新文件名.tar 要打包的目录/文件        # 仅打包(无压缩)
tar -zcf 新文件名.tar.gz 要打包的目录/文件    # 打包+gzip 压缩(最常用)
tar -jcf 新文件名.tar.bz2 要打包的目录/文件   # 打包+bzip2 压缩
tar -Jcf 新文件名.tar.xz 要打包的目录/文件    # 打包+xz 压缩

# 单文件压缩(保留原文件)
gzip -k 文件名
bzip2 -k 文件名
xz -k 文件名

3. 场景速记表

格式 解压命令 打包/压缩命令 适用场景
.zip unzip 文件名.zip -d 目标目录 zip 新文件名.zip 要压缩的文件/目录 跨平台文件传输
.tar tar -xf 文件名.tar -C 目标目录 tar -cf 新文件名.tar 要打包的内容 仅打包(不压缩)
.tar.gz tar -zxf 文件名.tar.gz -C 目标目录 tar -zcf 新文件名.tar.gz 要打包的内容 日常通用(平衡速度/压缩率)
.tar.bz2 tar -jxf 文件名.tar.bz2 -C 目标目录 tar -jcf 新文件名.tar.bz2 要打包的内容 中等压缩率
.tar.xz tar -Jxf 文件名.tar.xz -C 目标目录 tar -Jcf 新文件名.tar.xz 要打包的内容 大文件备份(高压缩率)
.gz/.bz2/.xz gzip/bzip2/xz -dk 文件名 gzip/bzip2/xz -k 文件名 单个文件压缩/解压

七、总结

  1. 通用参数-d=解压(gzip/bzip2/xz 通用)、-k=保留原文件(gzip/bzip2/xz 通用)、-v=显示过程(所有命令通用);
  2. tar 核心-f 必须放最后,-c(打包)/-x(解压)二选一,-z/-j/-J 对应不同压缩格式;
  3. 场景选择:处理目录用 tar,处理单个文件用 gzip/bzip2/xz,处理 zip 用 unzip;
  4. 生产环境 :解压优先用静默模式(去掉 -v),覆盖文件加 -o(unzip)/ 直接解压(tar 默认覆盖);打包想去掉路径层级,用 -C 指定目录+.

以上命令适配所有主流 Linux 发行版(CentOS、Ubuntu、Debian 等),可直接复制测试,建议收藏备用。

相关推荐
IMPYLH2 小时前
Linux 的 base32 命令
linux·运维·服务器·bash·shell
7yewh2 小时前
MCU 卷积神经网络部署 · 深度技术指南
linux·嵌入式硬件·ai·嵌入式
无垠的广袤2 小时前
【ChatECNU 大语言模型】基于 Linux 开发板的 OpenClaw 部署方案
linux·人工智能·语言模型
YYYing.2 小时前
【Linux/C++多线程篇(二) 】给线程装上“红绿灯”:通俗易懂的同步互斥机制讲解 & C++ 11下的多线程
linux·c语言·c++·经验分享·ubuntu
荆楚闲人3 小时前
ubuntu下实现自动以root用户开机无密码方式进入桌面
linux·运维·ubuntu
liweiweili1263 小时前
lsof 查看写入日志文件的进程是什么
linux
陈皮糖..3 小时前
Ansible实战教程----使用Ansible角色源码编译部署nginx服务
linux·运维·nginx·自动化·云计算·ansible
wifi chicken3 小时前
Linux wlan 周期性维护终端管理框架详解
linux·kernel·协议栈·wifi驱动
惊岁晚3 小时前
【WSL】anaconda安装配置
linux·运维·服务器