开篇词
通过将文件以及目录打包至一个压缩文件中,我们可以方便地对其进行迁移及备份操作。
打包并压缩文件
在我们选择工具之前,我们需要对比每个压缩工具的优劣。
我们来准备一个文件:
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*
# 这将使用 Lempel-Ziv 编码 (LZ77) 来对文件进行压缩操作
gzip 100MBFileGZIP
ll 100MBFile*
使用 bzip2
命令进行压缩
一个升级版的 gzip
。
由于 bzip2
会在压缩之后删除原文件,我们需要克隆一个新的文件:
# 将 100MBFile 克隆至 100MBFileGZIP
cp 100MBFile 100MBFileBZIP2
ll 100MBFile*
# 这将使用块排序压缩算法以及霍夫曼编码来进行文件的压缩
bzip2 100MBFileBZIP2
ll 100MBFile*
使用 xz
命令进行压缩
一个高压缩率的工具。
由于 xz
会在压缩之后删除原文件,我们需要克隆一个新的文件:
# 将 100MBFile 克隆至 100MBFileXZ
cp 100MBFile 100MBFileXZ
ll 100MBFile*
xz 100MBFileXZ
ll 100MBFile*
拆包并解压缩文件
使用 tar
命令进行拆包
tar -xf 100MBFile.tar # tar 命令在归档文件解压缩之后将其保留
ll 100MBFile*
使用 gunzip
命令进行解压缩
gunzip 100MBFileGZIP.gz # gunzip 命令在归档文件解压缩之后将其移除
ll 100MBFile*
使用 bunzip2
命令进行解压缩
bunzip2 100MBFileBZIP2.bz2 # bunzip2 命令在归档文件解压缩之后将其移除
ll 100MBFile*
使用 unxz
命令进行解压缩
unxz 100MBFileXZ.xz # unxz 命令在归档文件解压缩之后将其移除
ll 100MBFile*
查看打包文件及压缩文件的内容
我们准备一些可以在压缩文件内进行查看的文本文件:
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*
使用 tar
命令来查看文件
tar
命令的列表选项:
选项 | 用途 |
---|---|
-t 或 --list | 列出归档的内容。 |
我们可以使用 -t
或 --list
选项来查看 .tar
归档内所打包的文件:
tar -tf 100MBFile.tar # 别忘了其后的 f 选项
使用 gzip
命令来查看文件
gzip
命令的列表选项:
选项 | 用途 |
---|---|
-l 或 --list | 列出每个压缩的文件。 |
我们可以使用 -l
或 --list
选项来查看 .gz
归档内所打包的文件:
gzip -l READMEGZIP.gz # 等价于 gzip --list READMEGZIP.gz
使用 xz
命令来查看文件
xz
命令的列表选项:
选项 | 用途 |
---|---|
-l 或 --list | 打印压缩文件的信息。 |
我们可以使用 -l
或 --list
选项来查看 .xz
归档内所打包的文件:
xz -l READMEXZ.xz # 等价于 xz --list READMEXZ.xz
使用 zcat
、zmore
、zless
、zgrep
命令来查看
zcat READMEGZIP.gz
zmore READMEGZIP.gz
zgrep -e 'is a' READMEGZIP.gz
zless
是另一个选项。
使用 bzcat
、bzmore
、bzless
、bzgrep
命令来查看
bzcat READMEBZIP2.bz2
bzmore READMEBZIP2.bz2
bzgrep -e 'is a' READMEBZIP2.bz2
bzless
是另一个选项。
使用 xzcat
、xzmore
、xzless
、xzgrep
命令来查看
xzcat READMEXZ.xz
xzmore READMEXZ.xz
xzgrep -e 'is a' READMEXZ.xz
xzless
是另一个选项。
我所撰写的英文版本
41. Archiving - Compressing and Decompressing Files
引用
参见
上一篇:
想看手册的其他内容?请访问该手册的所属专栏:《Linux 管理员手册:既简单又深刻》