Linux 解压/压缩命令全解析:unzip、tar、gzip、bzip2、xz
在 Linux 日常开发中,解压/压缩文件是高频操作,不同格式对应不同命令。本文系统梳理 unzip、tar、gzip、bzip2、xz 五大核心命令,包含参数说明、实操案例、速记技巧。
一、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 文件名 | 单个文件压缩/解压 |
七、总结
- 通用参数 :
-d=解压(gzip/bzip2/xz 通用)、-k=保留原文件(gzip/bzip2/xz 通用)、-v=显示过程(所有命令通用); - tar 核心 :
-f必须放最后,-c(打包)/-x(解压)二选一,-z/-j/-J对应不同压缩格式; - 场景选择:处理目录用 tar,处理单个文件用 gzip/bzip2/xz,处理 zip 用 unzip;
- 生产环境 :解压优先用静默模式(去掉
-v),覆盖文件加-o(unzip)/ 直接解压(tar 默认覆盖);打包想去掉路径层级,用-C指定目录+.。
以上命令适配所有主流 Linux 发行版(CentOS、Ubuntu、Debian 等),可直接复制测试,建议收藏备用。