Linux 压缩与解压缩命令全指南:从基础到高效用法
在 Linux 系统中,压缩和解压缩文件是日常操作的重要组成部分,无论是备份数据、传输文件还是节省存储空间,都离不开这些工具。本文将详细解析 zip、gzip、bzip2、tar 等命令的用法,涵盖常见压缩格式(zip、gz、bz2、tar.gz、tar.bz2)的操作技巧。
ZIP 格式:跨平台兼容的压缩格式
ZIP 是 Windows 和 Linux 通用的压缩格式,支持多文件和目录压缩,兼容性极强。
压缩文件 / 目录
1 | # 基本语法:zip [选项] 压缩包名 待压缩文件/目录 |
选项说明:
-r:递归压缩目录(必须添加,否则无法压缩子目录)。-q:安静模式(不显示压缩过程)。-9:最高压缩率(默认是-6,数值越高压缩率越高,但速度越慢)。
解压缩 ZIP 文件
1 | # 基本语法:unzip [选项] 压缩包名 |
选项说明:
-d 路径:指定解压目录(目录需存在)。-l:查看压缩包内文件列表(不解压)。-o:覆盖已存在文件(不提示)。
GZ 格式:Linux 常用的轻量压缩格式
gzip 是 Linux 原生的压缩工具,压缩率适中,速度较快,但不支持压缩目录,且压缩后会删除源文件。
压缩文件
1 | # 基本语法:gzip [选项] 源文件 |
选项说明:
-k:保留源文件(默认删除)。-v:显示压缩率(如file.txt: 50.0% -- replaced with file.txt.gz)。-1至-9:调整压缩率(-1最快,-9压缩率最高)。
解压缩 GZ 文件
1 | # 方法 1:使用 gzip 解压缩 |
注意:gzip 仅能压缩单个文件,若需压缩目录,需先通过 tar 打包(见下文 tar.gz 格式)。
BZ2 格式:高压缩率的压缩格式
bzip2 压缩率高于 gzip,但速度较慢,同样不支持压缩目录,默认删除源文件。
压缩文件
1 | # 基本语法:bzip2 [选项] 源文件 |
选项说明:
-k:保留源文件(默认删除)。-v:显示压缩信息(如data.txt: 60.0%)。
解压缩 BZ2 文件
1 | # 方法 1:使用 bzip2 解压缩 |
TAR 格式:打包工具(非压缩)
tar 本身是打包工具(将多个文件 / 目录合并为一个文件),不具备压缩功能,但可与 gzip 或 bzip2 结合,实现 “打包 + 压缩” 一体化操作。
打包文件 / 目录
1 | # 基本语法:tar [选项] -f 打包文件名 待打包文件/目录 |
选项说明:
-c:创建新包(打包)。-v:显示打包过程(verbose)。-f 文件名:指定打包文件名(必须放在选项末尾)。--exclude 文件名:排除指定文件(如tar -cvf archive.tar --exclude "*.log" dir1/)。
解打包 TAR 文件
1 | tar -xvf archive.tar # 解打包到当前目录 |
选项说明:
-x:解打包。-t:查看包内文件列表(不解包,如tar -tf archive.tar)。
TAR.GZ 和 TAR.BZ2 格式:打包 + 压缩的组合格式
由于 gzip 和 bzip2 不支持压缩目录,实际使用中通常先通过 tar 打包,再用 gzip 或 bzip2 压缩,形成 tar.gz(或 .tgz)、tar.bz2 格式。
TAR.GZ 格式(tar + gzip)
压缩
1 | # 基本语法:tar -zcvf 压缩包名 待压缩文件/目录 |
-z:启用 gzip 压缩(识别.tar.gz格式)。
解压缩
1 | tar -zxvf docs.tar.gz # 解压到当前目录 |
TAR.BZ2 格式(tar + bzip2)
压缩
1 | # 基本语法:tar -jcvf 压缩包名 待压缩文件/目录 |
-j:启用 bzip2 压缩(识别.tar.bz2格式)。
解压缩
1 | tar -jxvf data.tar.bz2 # 解压到当前目录 |
两种格式的对比
| 格式 | 压缩工具 | 压缩率 | 速度 | 适用场景 |
|---|---|---|---|---|
tar.gz |
gzip | 中等 | 较快 | 日常备份、一般文件压缩 |
tar.bz2 |
bzip2 | 较高 | 较慢 | 追求高压缩率(如大文件备份) |
实用技巧与注意事项
查看压缩包内容(不解压):
1
2
3
4
5
6
7
8
9# ZIP 格式
unzip -l archive.zip
# GZ 格式(需结合 zcat)
zcat file.txt.gz # 查看内容(相当于解压后 cat)
# TAR 相关格式
tar -ztf docs.tar.gz # 查看 tar.gz 内容
tar -jtf data.tar.bz2 # 查看 tar.bz2 内容批量压缩 / 解压:
1
2
3
4
5# 批量压缩当前目录的 .txt 文件为单独的 .gz
for file in *.txt; do gzip -k $file; done
# 批量解压当前目录的 .tar.gz 文件
for file in *.tar.gz; do tar -zxvf $file; done压缩率与速度权衡:
- 追求速度:选择
tar.gz并使用-1选项(如tar -zcvf -1 fast.tar.gz dir/)。 - 追求压缩率:选择
tar.bz2或tar.gz -9。
- 追求速度:选择
避免覆盖文件:
- 解压前先查看压缩包内容,确认是否有重名文件。
- 使用
-o选项(如unzip -o、tar -zxvf --overwrite)强制覆盖(谨慎使用)。