Linux 下压缩和解压文件的命令种类很多,不同格式使用的命令也不一样,初学者会觉得比较复杂。故作一个总结。

🗂 常见压缩文件种类一览&误区解释

格式/扩展名 工具/程序 解压命令 优点 备注或使用建议
.tar tar tar -xvf file.tar 仅打包,不压缩 常用于归档,配合 gzip/bzip2 等使用
.tar.gz / .tgz tar + gzip tar -xvzf file.tar.gz 兼容性强,压缩速度快 最常见,广泛用于源码包
.tar.bz2 tar + bzip2 tar -xvjf file.tar.bz2 压缩率高,速度较慢 若对体积要求高,可选
.tar.xz tar + xz tar -xvJf file.tar.xz 压缩率更高,但速度慢 类似 .bz2,更先进
.gz gzip gunzip file.gzzcat 简单快速 只能压缩单个文件
.bz2 bzip2 bunzip2 file.bz2 压缩率比 gzip 高 也只压缩单文件
.xz xz unxz file.xz 压缩率比 bzip2 更高 替代 bzip2 的现代选择
.zip zip unzip file.zip 跨平台兼容好(Windows/mac) 图形界面友好,适合通用分享
.rar rar unrar x file.rar 压缩率高,支持恢复记录 私有格式,Linux 下需安装 unrar
.7z 7zip 7z x file.7z 高压缩率,支持多种算法 非常强大,跨平台,但默认不预装

误区

问:为什么 .tar.gz / .tar.bz2 / .tar.xz 等格式要 用两个压缩工具(比如 targzip)?

答:tar 负责“打包”(把多个文件/文件夹 合并成一个文件,不压缩体积),gzip 等负责“压缩”(只能压缩单个文件)

问:为什么windows上常用的压缩软件都没有这个概念?

答:Windows 的“打包+压缩”是默认合并的设计,linux遵循单一职责:一个工具只做一件事

压缩工具分类

所以工具可以分成三类:打包工具,压缩工具,打包压缩工具。

类别 功能 代表工具 示例格式
🔹 打包工具 合并多个文件为一个 tar .tar
🔸 压缩工具 压缩单个文件 gzip, bzip2, xz, compress .gz, .bz2, .xz, .Z
🟢 打包+压缩工具 同时打包并压缩 zip, rar, 7z .zip, .rar, .7z

打包工具

tar

tape archiver)是 Linux 和 Unix 系统中用于 归档压缩 文件的命令工具。最初设计用于将文件打包到磁带(tape)设备上,但现在广泛用于归档和压缩文件、目录。

tar [选项] [归档文件名] [要打包或解包的文件/目录(可以多个)]

用例:

tar -czf backup.tar.gz my_folder

常用参数速查表

参数 作用 记忆提示
-c 创建归档(create) 创建压缩包
-x 解包(extract) 解压缩包
-t 列出归档内容(list) 看看压了什么
-f 指定归档文件名(file) 必须跟在最后一个参数后
-v 显示过程(verbose) 看得见压了什么
-z 使用 gzip 压缩或解压 .tar.gz 用这个
-j 使用 bzip2 压缩或解压 .tar.bz2 用这个
-J 使用 xz 压缩或解压 .tar.xz 用这个
-C 解压的时候指定目录
--exclude 排除文件

常用参数

  1. 打包并压缩文件(打包成 .tar.gz

将目录 folder/ 打包并压缩为 archive.tar.gz 文件,将目录 folder/ 打包并压缩为一个 .tar.gz 文件,压缩过程中会显示每个文件的名字:

tar -czvf archive.tar.gz folder/
  1. 解压 .tar.gz 文件

解压一个 .tar.gz 文件(例如 archive.tar.gz),解压 archive.tar.gz 文件,恢复其中的文件,并显示详细信息:

tar -xzvf archive.tar.gz
  1. 查看 .tar 文件的内容

列出 archive.tar 文件中的内容,帮助你查看归档文件中的文件和目录结构,而不需要解压文件:

tar -tvf archive.tar

其他

不加 -ftar 就把压缩结果(归档内容)直接“输出到标准输出”(也就是终端)

压缩工具

gzip(GNU zip)

gzip 是一种非常常见的压缩工具,通常用于压缩单个文件。它压缩效率较高,常与 tar 配合使用以创建 .tar.gz.tgz 格式的归档文件。

参数 描述 示例
-c 将压缩内容输出到标准输出,保留原文件不删除 gzip -c file.txt > file.txt.gz
-d 解压 .gz 文件,等同于 gunzip gzip -d file.txt.gz
-f 强制压缩,忽略已有 .gz 文件,覆盖它 gzip -f file.txt
-l 列出压缩文件的详细信息,包括原始文件大小、压缩后的大小和压缩比 gzip -l file.txt.gz
-n 不显示压缩文件的原始文件名和时间戳信息 gzip -n file.txt
-q 静默模式,不显示压缩或解压过程中的警告信息 gzip -q file.txt
-r 递归地压缩目录中的所有文件 gzip -r folder/
-S 设置自定义的压缩后文件扩展名(默认是 .gz gzip -S .gzip file.txt
-v 显示详细信息,包括每个文件的压缩过程和进度 gzip -v file.txt
-9 设置最大压缩比,压缩较慢但效果最好 gzip -9 file.txt
-1 设置最小压缩比,压缩速度最快,但文件会更大 gzip -1 file.txt

常用指令

  1. 压缩文件

file.txt 压缩成 file.txt.gz,并删除原文件:

gzip file.txt
  1. 保留原文件并压缩

file.txt 压缩成 file.txt.gz,并保留原始文件:

gzip -c file.txt > file.txt.gz
  • c:将压缩输出到标准输出,并保留原始文件 file.txt

  1. 解压 .gz 文件

解压 file.txt.gz,恢复为 file.txt

gunzip file.txt.gz
  • gunzipgzip -d 的快捷方式,用于解压 .gz 文件。

bzip2

bzip2 是一种常见的文件压缩工具,与 gzip 类似,但通常提供更高的压缩比。bzip2 采用 Burrows-Wheeler 压缩算法,比 gzip 压缩的文件更小,但压缩和解压的速度较慢。它通常用于需要高压缩比而不太关注速度的场合。

参数 描述
-k 保留原始文件,压缩后不删除原文件。
-d 解压 .bz2 文件,等同于 bunzip2
-z 显示压缩进度(压缩时)。
-l 列出压缩文件的信息,包括压缩比和原始文件大小。
-v 显示详细的压缩/解压过程。
-f 强制覆盖已存在的压缩文件(与 -k 一起使用时)。
-c 将输出发送到标准输出,而不保存为文件。
-j 使用 bzip2 压缩(通常与 tar 一起使用)。

常用操作

  1. 压缩文件

file.txt 压缩为 file.txt.bz2

bzip2 file.txt
  • 默认情况下,file.txt 会被压缩并删除,生成压缩文件 file.txt.bz2
  1. 保留原文件并压缩

file.txt 压缩为 file.txt.bz2,并保留原始文件:

bzip2 -k file.txt
  • k 选项表示在压缩后保留原始文件 file.txt
  1. 解压 .bz2 文件

解压 file.txt.bz2 文件,并恢复为 file.txt

bunzip2 file.txt.bz2
  • bunzip2bzip2 -d 的快捷方式,用于解压 .bz2 文件。

xz

xz 是一种高效的压缩工具,基于 LZMA2(Lempel-Ziv-Markov chain algorithm 2)压缩算法。它通常提供比 gzipbzip2 更高的压缩比,但压缩速度较慢。xz 是处理大文件时的理想选择,尤其适合需要极高压缩比的情况。它可以用来压缩单个文件,也可以与 tar 配合使用来压缩目录。

参数 描述 记忆提示
-k 保留原文件,压缩后不删除原文件。 k 表示 “keep”(保留),帮助你记住是保留原文件。
-d 解压 .xz 文件,等同于 unxz d 是 “decompress”(解压)的首字母。
-v 显示详细信息(如压缩进度)。 v 是 “verbose”(详细)的首字母,表示输出详细信息。
-f 强制覆盖已存在的压缩文件(如果存在)。 f 是 “force”(强制)的首字母。
-c 将输出发送到标准输出,而不保存为文件。 c 是 “stdout”(标准输出)的缩写,用于表示输出到控制台。
-z 执行压缩(默认操作)。 z 是 “zip”(压缩)的首字母,尽管它与 gzip 相关,但它也代表压缩的操作。
-T 设置最大内存使用量,控制压缩的资源消耗。 T 是 “threads”(线程)或 “task”(任务)的首字母,代表多线程处理。
--best 使用最优压缩设置,压缩比最大,但速度较慢。 best 是 “最好的” 设置,用于表示最高压缩比。
--fast 使用最快的压缩设置,压缩比最小,但速度较快。 fast 是 “最快的” 设置,表示更快的压缩速度。
-t 测试压缩文件的完整性。 t 是 “test”(测试)的首字母,用于文件完整性检查。
-l 列出压缩文件的详细信息。 l 是 “list”(列出)的首字母,表示列出压缩文件内容。
-9 设置最大压缩比,速度较慢,但压缩效果最好。 9 代表压缩比的最大级别,通常用于最佳压缩设置。

常用指令

  1. 压缩文件

file.txt 压缩为 file.txt.xz

xz file.txt
  • 默认情况下,xz 会压缩文件并删除原始文件 file.txt,生成压缩文件 file.txt.xz
  1. 保留原文件并压缩

file.txt 压缩为 file.txt.xz,同时保留原始文件:

xz -k file.txt
  • k 选项表示在压缩后保留原始文件。
  1. 解压 .xz 文件

解压 file.txt.xz,恢复为 file.txt

unxz file.txt.xz
  • unxzxz -d 的快捷方式,用于解压 .xz 文件。

打包+压缩工具

zip

zip 是一种广泛使用的压缩工具,特别是在 Windows 系统中,它用来将多个文件和目录打包并压缩成一个 .zip 文件。与其他工具(如 tar)不同,zip 不仅是一个压缩工具,它还是一个打包工具,这意味着它能够将多个文件和目录组合成一个归档文件,并对其进行压缩。zip 文件格式是跨平台的,可以在多种操作系统中解压和读取。

zip 参数表格

参数 描述
-r 递归压缩目录。
-d 从压缩文件中删除指定文件。
-u 更新已有压缩文件,将新文件添加到现有的压缩文件中。
-j 忽略路径信息,将文件直接压缩到归档文件中。
-e 创建加密压缩文件,要求输入密码。
-9 设置最大压缩比,压缩速度较慢但压缩效果最好。
-q 在压缩过程中不显示任何输出信息(安静模式)。
-v 显示详细的压缩过程。
-l 列出压缩文件的内容。
-x 排除指定的文件或目录不进行压缩。
-m 设置压缩方法(storedeflate)。

常用指令

  1. 压缩文件和目录

folder/ 目录和 file.txt 文件压缩为 archive.zip

zip -r archive.zip folder/ file.txt
  • r 选项表示递归地压缩目录及其内容。
  1. 更新已存在的压缩文件

将新的文件或修改过的文件添加到现有的 archive.zip 中:

zip -u archive.zip newfile.txt
  • u 选项表示更新现有的压缩文件,添加新的或修改过的文件。
  1. 列出压缩文件的内容

查看 archive.zip 压缩文件中的内容,而不解压:

zip -l archive.zip
  • l 选项会列出压缩文件的内容,不会进行解压操作。

rar

RAR(Roshal ARchive)是一种流行的压缩文件格式,通常由 WinRAR 工具创建和解压。RAR 格式具有高压缩比,并且支持多卷压缩,可以将大文件分割成多个较小的压缩包,方便分发或存储。虽然 RAR 格式的压缩和解压通常需要专有软件(如 WinRAR)来处理,但它在多个平台上都有支持,尤其是在 Windows 操作系统中。

参数 描述
a 将文件添加到压缩档案中,创建新的 .rar 文件。
r 递归地将目录中的文件添加到压缩档案中。
u 更新已存在的压缩档案,只添加新文件或修改过的文件。
e 提取文件到当前目录(去除文件夹结构)。
x 排除某些文件,不压缩指定的文件。
v 显示详细信息,包括进度条。
m 设置压缩比(-m1-m5-m5 为最大压缩)。
p 设置压缩档案的密码。
t 测试压缩档案的完整性。
l 列出压缩档案中的文件内容。
d 解压 .rar 文件。
-v 分卷压缩,生成多个压缩档案。
-cf 强制覆盖已存在的文件。

常用操作

  1. 创建 .rar 文件并压缩目录

folder/ 目录压缩成 archive.rar 文件:

rar a archive.rar folder/
  • a 选项表示创建新的 .rar 文件,并将文件添加到压缩档案中。
  • folder/ 表示要压缩的目录。
  1. 解压 .rar 文件

archive.rar 文件解压到当前目录:

rar x archive.rar
  • x 选项表示解压档案,并恢复压缩文件中的完整路径结构。
  1. 列出 .rar 文件内容

列出 archive.rar 压缩文件中的内容:

rar l archive.rar
  • l 选项表示列出压缩文件中的内容,而不进行解压。

其他

rar 更注重与 Windows 用户习惯的兼容性,因此没有使用 -