想必大家都对 ZIP 文件并不陌生。它因其广泛的兼容性和易用性,成为 Windows 和 macOS 默认的压缩格式。压缩与解压的操作,大家都再熟悉不过,在 Linux 系统中,当然也提供了多种压缩工具。正因如此,不同格式的选择和使用常常让人感到困惑。下面让我们来一起梳理一下。
概览
常见压缩格式及用途
gzip
(
.gz
):高效且常用,常与
tar
联合使用。
bzip2
(
.bz2
):压缩率较高,但速度较慢。
zip
(
.zip
):跨平台常用格式,支持直接包含多个文件。
7z
(
.7z
):由 7-Zip 提供,支持极高压缩率。
xz
(
.xz
):压缩率高,适合对大小敏感的应用。
rar
(
.rar
):需要专用工具解压,常见于Windows环境。
tar
(
.tar
):用于打包多个文件,但本身不压缩。
文件
类型
压缩
解压
默认
压缩级
默认压缩是否保留源文件
.gz
gzip file.txt
gzip -d file.txt.gz
gunzip file.txt.gz
6
否
.bz2
bzip2 file.txt
bzip2 -d file.txt.bz2
bunzip2 file.txt.bz2
9
否
.xz
xz file.txt
xz -d file.txt.xz
unxz file.txt.xz
6
否
.zip
zip file.zip file.txt
unzip file.zip
6
是
.rar
rar a file.rar file.txt
unrar x file.rar
3
是
.7z
7z a file.7z file.txt
7z x archive.7z
5
是
.tar.gz
tar -czf archive.tar.gz file1 file2
tar -xzf archive.tar.gz
/
/
.tar.bz
tar -cjf archive.tar.bz2 file1 file2
tar -xjf archive.tar.bz2
/
/
.tar.xz
tar -cJf archive.tar.xz file1 file2
tar -xJf archive.tar.xz
/
/
基础命令及常见用法
.gz 文件
.gz
文件是使用
GNU Zip (gzip)
工具进行压缩的文件格式,通常用于压缩单个文件或文件流。
.gz
格式是广泛使用的压缩格式。
gzip压缩
gzip压缩
,压缩完成后会默认删除源文件
# #将 file.txt 压缩成 file.txt.gz gzip file.txt
压缩且保留源文件
gzip -k file.txt gzip -c file.txt > file.txt.gz
同时压缩多个文件
可以分别列出,也可以使用通配符。
# 压缩后会分别生成 file1.txt.gz、file2.txt.gz 和 file3.txt.gz gzip file1.txt file2.txt file3.txt gzip file*.txt
指定压缩级别
gzip 提供了压缩级别的选择,范围从
1
到
9
,其中
1
是最快的压缩速度,但压缩比最低,
9
是最慢的压缩速度,但压缩比最高。默认情况下,
gzip
使用压缩级别
6
。
# #使用最大压缩比 gzip -9 file.txt ##使用最快压缩速度 gzip -1 file.txt
.gz文件解压
解压
.gz
文件可以使用
gunzip
命令或
gzip -d
命令。
gzip解压
,默认会删除源文件
gzip -d file.txt.gz gunzip file.txt.gz
解压且保留源文件
gzip -dk file.txt.gz gunzip -k file.txt.gz
同时解压多个gz文件
gzip -d file1.gz file2.gz file3.gz gunzip file1.gz file2.gz file3.gz
解压到指定目录
本质是重定向了输出。
gzip -dc GRCh38.p14.genome.fa.gz > /path/to/destination /GRCh38.p14.genome.fa gunzip -c file.txt.gz > /path/to/destination /file.txt ##解压同时重命名 gunzip -c file.txt.gz > /path/to/destination /new_filename.txt
查看gz文件的详细信息
包括原文件大小、压缩后大小、压缩比等
gzip -l GRCh38.p14.genome.fa.gz
检查gz文件是否完整
没有报错输出即代表文件完整
gzip -t GRCh38.p14.genome.fa.gz
.bz2 文件
.bz2
文件是使用
bzip2
工具进行压缩的文件格式,因其默认提供比
gzip
更高的压缩比,广泛用于压缩大文件,尽管压缩和解压速度相对较慢。
bzip2压缩
bzip2压缩
压缩完成后也是默认删除源文件
# #file.txt 将被压缩成 file.txt.bz2 bzip2 file.txt
压缩且保留源文件
bzip2 -k file.txt
指定压缩级别压缩
bzip2
同样允许指定压缩级别,范围从
1
到
9
,其中
1
是最快的压缩速度,但压缩比最低,
9
是最慢的压缩速度,但压缩比最高。默认压缩级别是
9
(最高压缩比)。
bzip2 -1 file.txt bzip2 -9 file.txt
同时压缩多个文件
bzip2 file1.txt file2.txt file3.txt bzip2 file*.txt
.bz文件解压
类似
.gz
文件,解压
.bz2
文件可以使用
bunzip2
命令或者
bzip2 -d
命令。
解压
默认删除源文件
# file.txt.bz2 会被解压为 file.txt bunzip2 file.txt.bz2# #或者 bzip2 -d file.txt.bz2
解压时保留源文件
bunzip2 -k file.txt.bz2# #或者 bzip2 -dk file.txt.bz2
同时解压多个文件
bunzip2 file1.bz2 file2.bz2 file3.bz2 bzip2 -d file1.bz2 file2.bz2 file3.bz2 bunzip file*.bz2 bzip2 -d file*.bz2
解压到指定目录
bunzip2 -c file.txt.bz2 > /path/to/destination /file.txt bzip2 -dc file.txt.bz2 > /path/to/destination /file.txt ##解压并重命名 bunzip2 -c file.txt.bz2 > /path/to/destination /new_filename.txt bzip2 -dc file.txt.bz2 > /path/to/destination /new_filename.txt
查看压缩文件详细信息
bzip2 -l file.txt.bz2
检查压缩文件完整性
bzip2 -t file.txt.bz2
.xz 文件
.xz
文件格式是基于 LZMA2算法(Lempel-Ziv-Markov chain algorithm)的压缩文件格式,提供了非常高的压缩比,通常比
.gz
和
.bz2
格式更高效,尤其适用于压缩大文件。它在 Linux 和类 Unix 系统中非常流行,并且常用于软件包的分发和备份。
xz压缩
压缩
默认删除源文件
# # 压缩 file.txt,并生成一个名为 file.txt.xz 的压缩文件 xz file.txt
压缩并保留源文件
# #将 file.txt 压缩为 file.txt.xz,并保留原文件 file.txt xz -k file.txt
指定压缩级别
xz
默认的压缩级别是
6
,且支持多个压缩级别,压缩级别的范围是从
1
到
9
,其中
1
是最快的压缩,但压缩比最低,
9
是最慢的压缩,但压缩比最高。
# #使用最大压缩比 xz -9 file.txt ##使用最快压缩速度 xz -1 file.txt
同时压缩多个文件
xz file1.txt file2.txt file3.txt ##使用通配符 xz file*
.xz文件解压
xz -d file.txt.xz# #或者 unxz file.txt.xz
解压到指定目录
xz -dc file.txt.xz > /path/to/destination /file.txt unxz -c file.txt.xz > /path/to/destination /file.txt
查看
.xz
文件的内容
# #会显示压缩文件的大小、压缩率等信息,但不会解压文件 xz -l file.txt.xz
.tar 文件
gzip、bzip2和xz 都不能压缩整个目录,如果要用压缩整个目录为
.gz
、
.bz
、
.xz
格式,这个时候就需要和 tar 命令联用。
tar
(Tape Archive)是 Unix 和类 Unix 系统中的一个常用命令,用于创建、管理和解压归档文件(通常称为 tarball)。
tar
不仅能将多个文件和目录归档为一个文件(
.tar
格式),还支持多种压缩算法,如
.gz
、
.bz2
、
.xz
等,生成
.tar.gz
、
.tar.bz2
、
.tar.xz
等压缩文件。
创建归档文件
使用
-c
选项创建一个归档文件,
-f
选项指定归档文件的名称。
# # 把 file1、file2 和 directory/ 压缩为 archive.tar tar -cf archive.tar file1 file2 directory/
查看归档内容而不解压
# #列出 archive.tar 中包含的所有文件和目录 tar -tf archive.tar
解开归档文件
# #解压 archive.tar 中的所有文件到当前目录 tar -xf archive.tar ##解压归档文件到指定目录 tar -xf archive.tar -C /path/to/destination /
归档和压缩联用
# #归档,并调用gzip压缩打包后的文件 tar -czf archive.tar.gz file1 file2# #归档,并调用bzip2压缩打包后的文件 tar -cjf archive.tar.bz2 file1 file2# #归档,并使用xz压缩打包后的文件 tar -cJf archive.tar.xz file1 file2
解压使用压缩格式的归档文件
# #解压 .tar.gz 或 .tgz文件: tar -xzf archive.tar.gz ##解压 .tar.bz2 文件 tar -xjf archive.tar.bz2 ##解压 .tar.xz 文件 tar -xJf archive.tar.xz ##自动识别后缀解压 tar -xf archive.tar.gz tar -xf archive.tar.bz2 tar -xf archive.tar.xz
注:如果记不住解压gz、bz2、xz压缩文件的具体参数,只需要记住
tar -xf
即可,会自带识别文件后缀,使用对应的工具来解压
.zip 文件
在 Linux 系统中,
.zip
文件格式并不是本地支持的(如
.gz
或
.bz2
),但是可以通过安装
zip
和
unzip
工具来处理
.zip
文件。
zip压缩
压缩文件
zip默认会保留源文件
# #将 file.txt 压缩成 file.zip 文件 zip file.zip file.txt
压缩多个文件
zip archive.zip file1.txt file2.txt file3.txt ##使用通配符 zip archive.zip *.txt
压缩整个目录
# # 将 directory/` 目录及其所有子文件和子目录压缩成 archive.zip 文件
zip -r archive.zip directory/
指定压缩级别压缩
zip
命令也可以自定义设置压缩级别,从
0
到
9
,其中
0
为不压缩,
9
为最大压缩。默认的压缩级别是
6
。
zip -0 archive.zip file.txt zip -9 archive.zip file.txt
更新压缩文件
添加文件到已存在的
.zip
文件/更新
.zip
文件中的文件
-u
参数,可以向已经存在的
.zip
文件添加新的文件。
# 将 `file4.txt` 添加到已存在的 `archive.zip` 文件中 zip -u archive.zip file4.txt #将更新后的 `file1.txt` 添加到 `archive.zip` 文件中(如果文件内容有变化)。 zip -u archive.zip file1.txt
.zip文件解压
解压 .zip
# # 解压 file.zip 到当前目录,并且会自动提取文件及目录结构 unzip file.zip
解压到指定目录
# #将 file.zip 解压到 /path/to/destination / 目录,且保持原有的目录结构 unzip file.zip -d /path/to/destination /
列出 .zip 文件内容
# #列出 file.zip 文件中的所有内容(文件名、大小等信息) unzip -l file.zip
仅解压指定文件
# 仅解压read2.txt 和 readme6.txt 到 tmp3目录下 unzip tmp.zip tmp/read2.txt readme6.txt -d ./tmp3/
.rar 文件
.rar
文件是由
RAR
压缩工具生成的文件格式,通常提供较高的压缩比,尤其适用于大文件和多文件集合。RAR 文件格式在 Linux 中通常也不是内建支持的,但可以通过安装
unrar
或
rar
来处理
.rar
文件。安装可以系统管理员安装也可以自己安装。
# #管理员安装 sudo apt install unrar ##普通用户安装