-
tar 的打包和压缩实际上是相互依存的。经过上一节 4-11 tar 打包的学习再接触这节的压缩,其实很简单。实际上就是在打包命令前加上对应的压缩字符,就代表采用什么压缩方式进行打包压缩。
-
概念上来说,打包 --- 正如上节 4-11 的测试可以把很多目录、很多文件打包成一个总文件。压缩 --- 则是将大文件通过压缩的过程令其变小,打包和压缩可以一并进行。很多场景是把一堆文件打包成一个大包(总文件)。然后对大包进行压缩,提高发送的效率。
-
tar 支持三种不同的压缩方式:
gzip:应用广泛,压缩速度快,压缩率较差。
bzip2:压缩速度和压缩率都是中规中矩。压缩速度较 gzip 慢,压缩率较 gzip 高。
xz:压缩速度慢,压缩率佳。压缩速度较 gzip、bzip2 慢,压缩率比 gzip、bzip2 高。 -
三种压缩方式的参数选项及命名规范:
z:gzip、filename.tar.gz
j:bzip2、filename.tar.bz2
J:xz、filename.tar.xz -
4-12 内容:
学习 gzip、bzip2 和 xz 的压缩操作,进行三种压缩方式的对比。 -
1、gzip、bzip2 和 xz 三种压缩方式的单项目录压缩对比。
-
操作步骤:
1)、首先搭建测试框架。test 目录下创建 SRC 目录,源目录的存放目录。然后创建 backups_tar 目录,压缩包的存放目录。
[root@localhost ~]# cd test/ ## 切换到 test 目录
[root@localhost test]#
[root@localhost test]# mkdir SRC ## 创建 SRC 和 backups_tar 目录
[root@localhost test]# mkdir backups_tar
[root@localhost test]#
[root@localhost test]# tree ## test 的目录结构
.
├── backups_tar
└── SRC
2 directories, 0 files
[root@localhost test]#
- 2)、同步 / 根目录的 etc 目录到 SRC 目录。(或者 cp 复制也可以)
[root@localhost test]# rsync -a /etc SRC/ ## 同步 / 根目录的 etc 目录到 SRC 目录
[root@localhost test]#
[root@localhost test]# cd SRC/ ## 切换到 SRC
[root@localhost SRC]#
[root@localhost SRC]# ll ## 已经有 etc目录
total 12
drwxr-xr-x. 75 root root 8192 Sep 17 20:06 etc
[root@localhost SRC]#
- 3)、分别用 gz、bz2 和 xz 三种方式压缩 etc 目录到 backups_tar 目录下进行对比。
- 执行 gz 压缩 etc 目录到 backups_tar。
[root@localhost SRC]# ls
etc
[root@localhost SRC]# tar zcvf ../backups_tar/etc.tar.gz etc/
gzip 压缩命令图解(路径仅供参考,以实际情况为准)
- 执行 bz2 压缩 etc 目录到 backups_tar 的时候可能会出现 ' tar (child): bzip2: Cannot exec: No such file or directory ' 的提示。这是因为系统没有安装 bzip2,只需要安装上就可以。
[root@localhost SRC]# tar jcvf ../backups_tar/etc.tar.bz2 etc/
## 提示没有 bzip2 的文件和目录。
tar (child): bzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
etc/
etc/favicon.png
etc/grub2.cfg
etc/init.d
etc/localtime
etc/mtab
etc/os-release
etc/rc.local
etc/rc0.d
etc/rc1.d
etc/rc2.d
etc/rc3.d
etc/rc4.d
etc/rc5.d
etc/rc6.d
etc/redhat-release
etc/system-release
etc/NetworkManager/
etc/NetworkManager/conf.d/
etc/NetworkManager/dispatcher.d/
[root@localhost SRC]#
- 安装 bzip2
[root@localhost SRC]# yum -y install bzip2
- 执行 bz2 压缩 etc 目录到 backups_tar。
[root@localhost SRC]# tar jcvf ../backups_tar/etc.tar.bz2 etc/
bzip2 压缩命令图解(路径仅供参考,以实际情况为准)
- 执行 xz 压缩 etc 目录到 backups_tar。
[root@localhost SRC]# tar Jcvf ../backups_tar/etc.tar.xz etc/
xz 压缩命令图解(路径仅供参考,以实际情况为准)
- 4)、切换到 backups_tar 目录对比三种压缩方式的情况。
速度:gz 最快、xz 最慢、bz2 中规中矩。
压缩率:xz 最高、gz 最低、bz2 中规中矩。
[root@localhost SRC]#
[root@localhost SRC]# cd ../backups_tar/
[root@localhost backups_tar]#
[root@localhost backups_tar]# ll -h
total 28M
-rw-r--r--. 1 root root 9.5M Sep 19 01:50 etc.tar.bz2 ## bz2 压缩率 9.5M,中规中矩。
-rw-r--r--. 1 root root 11M Sep 19 00:44 etc.tar.gz ## gz 压缩率 11M,最低。
-rw-r--r--. 1 root root 7.1M Sep 19 01:46 etc.tar.xz ## xz 压缩率 7.1M,最高。
[root@localhost backups_tar]#
- 2、gzip、bzip2 和 xz 三种压缩方式的多项目录压缩对比。
1)rsync 从 /etc 目录下同步 systemd、yum、yum.repos.d、yum.repos.d.aliyunbak、terminfo 目录到 SRC 目录。现在 SRC 目录已经有多个目录。
[root@localhost SRC]# cd /etc/ ## 切换到 etc 目录
## 同步多个目录到 SRC 目录
[root@localhost etc]# rsync -a systemd yum yum.repos.d yum.repos.d.aliyunbak terminfo /root/test/SRC/
[root@localhost etc]#
[root@localhost etc]# cd
[root@localhost ~]# cd test/SRC/
[root@localhost SRC]#
[root@localhost SRC]# ls ## SRC 目录下已经有多个目录
etc systemd terminfo yum yum.repos.d yum.repos.d.aliyunbak
[root@localhost SRC]#
- 2)、执行 gz 压缩当前目录所有内容到 backups_tar 目录。
[root@localhost SRC]# ls
etc systemd terminfo yum yum.repos.d yum.repos.d.aliyunbak
[root@localhost SRC]#
[root@localhost SRC]# tar zcvf ../backups_tar/file.tar.gz *
gzip 压缩命令图解(路径仅供参考,以实际情况为准)
- 3)、执行 bz2 压缩当前目录所有内容到 backups_tar 目录。
[root@localhost SRC]# tar jcvf ../backups_tar/file.tar.bz2 *
bzip2 压缩命令图解(路径仅供参考,以实际情况为准)
- 4)、执行 xz 压缩当前目录所有内容到 backups_tar 目录。
[root@localhost SRC]# tar Jcvf ../backups_tar/file.tar.xz *
xz 压缩命令图解(路径仅供参考,以实际情况为准)
- 5)、ll 查看 backups_tar 目录对比三种压缩方式的情况。
速度:gz 最快、xz 最慢、bz2 中规中矩。
压缩率:xz 最高、gz 最低、bz2 中规中矩。
[root@localhost SRC]# ll -h ../backups_tar/
total 28M
-rw-r--r--. 1 root root 9.5M Sep 20 02:10 file.tar.bz2 ## bz2 压缩率 9.5M,中规中矩。
-rw-r--r--. 1 root root 11M Sep 20 02:02 file.tar.gz ## gz 压缩率 11M,最低。
-rw-r--r--. 1 root root 7.1M Sep 20 02:11 file.tar.xz ## xz 压缩率 7.1M,最高。
[root@localhost SRC]#
- 综上测试:
- 梳理了打包和压缩的概念。
- 通过操作知道打包压缩可以一并执行。
- 了解 gzip、bzip2 和 xz 三种不同的压缩方式。
- 单目录和多目录的打包压缩实操,了解操作流程。
- 对比了 gzip、bzip2 和 xz 三种不同的压缩方式特性。
- 如遇到需要压缩的数据分布比较广,可以先把需要压缩的数据集合到一个目录内,再对集合的目录进行打包 或 压缩。
网友评论