41. 归档 - 压缩与解压缩文件

开篇词

通过将文件以及目录打包至一个压缩文件中,我们可以方便地对其进行迁移及备份操作。
 

打包并压缩文件

在我们选择工具之前,我们需要对比每个压缩工具的优劣。
我们来准备一个文件:

dd if=/dev/zero of=100MBFile bs=102400 count=1

使用 tar 命令进行打包

tar 命令是一个标准的压缩和解压缩工具。
tar 文件的后缀为 .tar
tar 命令提供了一些选项以供选择:

选项 用途
-c 或 --create 创建新归档
-z 或 --gzip 通过 gzip 来过滤归档
-v 或 --verbose 打印处理信息
-x 或 --extract 或 --get 从归档提取文件
-f 或 --file 使用归档文件或设备 ARCHIVE,该选项必须出现在末尾
# 创建一个普通的归档,大小不变
tar -cvf 100MBFile.tar 100MBFile    # 除了 f,其他选项的位置可以随意挪动
ll 100MB*

归档文件的大小大于原文件

使用 -z 选项进行压缩

通过添加 z 选项,tar 命令使用 gzip 算法来压缩文件:

tar -czvf 100MBFile.tar.gz 100MBFile
ll 100MB*

归档的文件小于原文件

使用 gzip 命令进行压缩

由于 gzip 会在压缩之后删除原文件,我们需要克隆一个新的文件:

# 将 100MBFile 克隆至 100MBFileGZIP
cp 100MBFile 100MBFileGZIP
ll 100MBFile*

克隆一个名为 `00MBFileGZIP 的新文件并列出文件

# 这将使用 Lempel-Ziv 编码 (LZ77) 来对文件进行压缩操作
gzip 100MBFileGZIP
ll 100MBFile*

使用 gzip 命令来压缩文件

使用 bzip2 命令进行压缩

一个升级版的 gzip
由于 bzip2 会在压缩之后删除原文件,我们需要克隆一个新的文件:

扫描二维码关注公众号,回复: 9024497 查看本文章
# 将 100MBFile 克隆至 100MBFileGZIP
cp 100MBFile 100MBFileBZIP2
ll 100MBFile*

克隆出一个名为 100MBFileBZIP2 新文件并列出文件

# 这将使用块排序压缩算法以及霍夫曼编码来进行文件的压缩
bzip2 100MBFileBZIP2
ll 100MBFile*

使用 bzip2 命令来压缩文件

使用 xz 命令进行压缩

一个高压缩率的工具。
由于 xz 会在压缩之后删除原文件,我们需要克隆一个新的文件:

# 将 100MBFile 克隆至 100MBFileXZ
cp 100MBFile 100MBFileXZ
ll 100MBFile*

克隆出一个名为 100MBFileXZ 的新文件并列出文件

xz 100MBFileXZ
ll 100MBFile*

使用 xz 命令来压缩文件
 

拆包并解压缩文件

使用 tar 命令进行拆包

tar -xf 100MBFile.tar    # tar 命令在归档文件解压缩之后将其保留
ll 100MBFile*

使用 x 选项来对文件进行拆包操作

使用 gunzip 命令进行解压缩

gunzip 100MBFileGZIP.gz    # gunzip 命令在归档文件解压缩之后将其移除
ll 100MBFile*

使用 gunzip 命令来对文件进行解压操作

使用 bunzip2 命令进行解压缩

bunzip2 100MBFileBZIP2.bz2    # bunzip2 命令在归档文件解压缩之后将其移除
ll 100MBFile*

使用 bunzip2 命令来对文件进行解压操作

使用 unxz 命令进行解压缩

unxz 100MBFileXZ.xz    # unxz 命令在归档文件解压缩之后将其移除
ll 100MBFile*

使用 unxz 命令来对文件进行解压操作
 

查看打包文件及压缩文件的内容

我们准备一些可以在压缩文件内进行查看的文本文件:

echo 'This is a README.txt file for GZIP' > READMEGZIP
echo 'This is a README.txt file for BZIP2' > READMEBZIP2
echo 'This is a README.txt file for XZ' > READMEXZ
gzip READMEGZIP
bzip2 READMEBZIP2
xz READMEXZ
ll README*

给由 gzip、bzip2 以及 xz 工具提供的查看命令准备三个文本文件

使用 tar 命令来查看文件

tar 命令的列表选项:

选项 用途
-t 或 --list 列出归档的内容。

我们可以使用 -t--list 选项来查看 .tar 归档内所打包的文件:

tar -tf 100MBFile.tar    # 别忘了其后的 f 选项

在 .tar 归档内查看压缩的文件

使用 gzip 命令来查看文件

gzip 命令的列表选项:

选项 用途
-l 或 --list 列出每个压缩的文件。

我们可以使用 -l--list 选项来查看 .gz 归档内所打包的文件:

gzip -l READMEGZIP.gz    # 等价于 gzip --list READMEGZIP.gz

在 .gz 归档内查看压缩的文件

使用 xz 命令来查看文件

xz 命令的列表选项:

选项 用途
-l 或 --list 打印压缩文件的信息。

我们可以使用 -l--list 选项来查看 .xz 归档内所打包的文件:

xz -l READMEXZ.xz    # 等价于 xz --list READMEXZ.xz

在 .xz 归档内查看压缩的文件

使用 zcatzmorezlesszgrep 命令来查看

zcat READMEGZIP.gz
zmore READMEGZIP.gz
zgrep -e 'is a' READMEGZIP.gz

使用 zcat、zmore 以及 zgrep 命令来查看 .gz 归档文件的文本内容
zless 是另一个选项。

使用 bzcatbzmorebzlessbzgrep 命令来查看

bzcat READMEBZIP2.bz2
bzmore READMEBZIP2.bz2
bzgrep -e 'is a' READMEBZIP2.bz2

使用 bzcat、bzmore 以及 bzgrep 命令来查看 .bz2 归档文件的文本内容
bzless 是另一个选项。

使用 xzcatxzmorexzlessxzgrep 命令来查看

xzcat READMEXZ.xz
xzmore READMEXZ.xz
xzgrep -e 'is a' READMEXZ.xz

使用 xzcat、xzmore 以及 xzgrep 命令来查看 .xz 归档文件的文本内容
xzless 是另一个选项。
 

我所撰写的英文版本

41. Archiving - Compressing and Decompressing Files
 

引用

参见

上一篇:

想看手册的其他内容?请访问该手册的所属专栏:《Linux 管理员手册:既简单又深刻

发布了132 篇原创文章 · 获赞 6 · 访问量 7933

猜你喜欢

转载自blog.csdn.net/stevenchen1989/article/details/104231120
今日推荐