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.gz 或 zcat |
简单快速 | 只能压缩单个文件 |
.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
等格式要 用两个压缩工具(比如 tar
和 gzip
)?
答: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 |
排除文件 |
常用参数
- 打包并压缩文件(打包成
.tar.gz
)
将目录 folder/
打包并压缩为 archive.tar.gz
文件,将目录 folder/
打包并压缩为一个 .tar.gz
文件,压缩过程中会显示每个文件的名字:
tar -czvf archive.tar.gz folder/
- 解压
.tar.gz
文件
解压一个 .tar.gz
文件(例如 archive.tar.gz
),解压 archive.tar.gz
文件,恢复其中的文件,并显示详细信息:
tar -xzvf archive.tar.gz
- 查看
.tar
文件的内容
列出 archive.tar
文件中的内容,帮助你查看归档文件中的文件和目录结构,而不需要解压文件:
tar -tvf archive.tar
其他
不加 -f
,tar
就把压缩结果(归档内容)直接“输出到标准输出”(也就是终端)
压缩工具
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 |
常用指令
- 压缩文件
将 file.txt
压缩成 file.txt.gz
,并删除原文件:
gzip file.txt
- 保留原文件并压缩
将 file.txt
压缩成 file.txt.gz
,并保留原始文件:
gzip -c file.txt > file.txt.gz
c
:将压缩输出到标准输出,并保留原始文件file.txt
。
- 解压
.gz
文件
解压 file.txt.gz
,恢复为 file.txt
:
gunzip file.txt.gz
gunzip
是gzip -d
的快捷方式,用于解压.gz
文件。
bzip2
bzip2
是一种常见的文件压缩工具,与 gzip
类似,但通常提供更高的压缩比。bzip2
采用 Burrows-Wheeler 压缩算法,比 gzip
压缩的文件更小,但压缩和解压的速度较慢。它通常用于需要高压缩比而不太关注速度的场合。
参数 | 描述 |
---|---|
-k |
保留原始文件,压缩后不删除原文件。 |
-d |
解压 .bz2 文件,等同于 bunzip2 。 |
-z |
显示压缩进度(压缩时)。 |
-l |
列出压缩文件的信息,包括压缩比和原始文件大小。 |
-v |
显示详细的压缩/解压过程。 |
-f |
强制覆盖已存在的压缩文件(与 -k 一起使用时)。 |
-c |
将输出发送到标准输出,而不保存为文件。 |
-j |
使用 bzip2 压缩(通常与 tar 一起使用)。 |
常用操作
- 压缩文件
将 file.txt
压缩为 file.txt.bz2
:
bzip2 file.txt
- 默认情况下,
file.txt
会被压缩并删除,生成压缩文件file.txt.bz2
。
- 保留原文件并压缩
将 file.txt
压缩为 file.txt.bz2
,并保留原始文件:
bzip2 -k file.txt
k
选项表示在压缩后保留原始文件file.txt
。
- 解压
.bz2
文件
解压 file.txt.bz2
文件,并恢复为 file.txt
:
bunzip2 file.txt.bz2
bunzip2
是bzip2 -d
的快捷方式,用于解压.bz2
文件。
xz
xz
是一种高效的压缩工具,基于 LZMA2(Lempel-Ziv-Markov chain algorithm 2)压缩算法。它通常提供比 gzip
和 bzip2
更高的压缩比,但压缩速度较慢。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 代表压缩比的最大级别,通常用于最佳压缩设置。 |
常用指令
- 压缩文件
将 file.txt
压缩为 file.txt.xz
:
xz file.txt
- 默认情况下,
xz
会压缩文件并删除原始文件file.txt
,生成压缩文件file.txt.xz
。
- 保留原文件并压缩
将 file.txt
压缩为 file.txt.xz
,同时保留原始文件:
xz -k file.txt
k
选项表示在压缩后保留原始文件。
- 解压
.xz
文件
解压 file.txt.xz
,恢复为 file.txt
:
unxz file.txt.xz
unxz
是xz -d
的快捷方式,用于解压.xz
文件。
打包+压缩工具
zip
zip
是一种广泛使用的压缩工具,特别是在 Windows 系统中,它用来将多个文件和目录打包并压缩成一个 .zip
文件。与其他工具(如 tar
)不同,zip
不仅是一个压缩工具,它还是一个打包工具,这意味着它能够将多个文件和目录组合成一个归档文件,并对其进行压缩。zip
文件格式是跨平台的,可以在多种操作系统中解压和读取。
zip
参数表格
参数 | 描述 |
---|---|
-r |
递归压缩目录。 |
-d |
从压缩文件中删除指定文件。 |
-u |
更新已有压缩文件,将新文件添加到现有的压缩文件中。 |
-j |
忽略路径信息,将文件直接压缩到归档文件中。 |
-e |
创建加密压缩文件,要求输入密码。 |
-9 |
设置最大压缩比,压缩速度较慢但压缩效果最好。 |
-q |
在压缩过程中不显示任何输出信息(安静模式)。 |
-v |
显示详细的压缩过程。 |
-l |
列出压缩文件的内容。 |
-x |
排除指定的文件或目录不进行压缩。 |
-m |
设置压缩方法(store 或 deflate )。 |
常用指令
- 压缩文件和目录
将 folder/
目录和 file.txt
文件压缩为 archive.zip
:
zip -r archive.zip folder/ file.txt
r
选项表示递归地压缩目录及其内容。
- 更新已存在的压缩文件
将新的文件或修改过的文件添加到现有的 archive.zip
中:
zip -u archive.zip newfile.txt
u
选项表示更新现有的压缩文件,添加新的或修改过的文件。
- 列出压缩文件的内容
查看 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 |
强制覆盖已存在的文件。 |
常用操作
- 创建
.rar
文件并压缩目录
将 folder/
目录压缩成 archive.rar
文件:
rar a archive.rar folder/
a
选项表示创建新的.rar
文件,并将文件添加到压缩档案中。folder/
表示要压缩的目录。
- 解压
.rar
文件
将 archive.rar
文件解压到当前目录:
rar x archive.rar
x
选项表示解压档案,并恢复压缩文件中的完整路径结构。
- 列出
.rar
文件内容
列出 archive.rar
压缩文件中的内容:
rar l archive.rar
l
选项表示列出压缩文件中的内容,而不进行解压。
其他
rar
更注重与 Windows 用户习惯的兼容性,因此没有使用 -
。