1、压缩的介绍

1.1 归档的含义

将许多零散的文件整理为一个文件;

文件总的大小基本不变;

1.2压缩的含义

按某种算法减小文件所占用空间的大小;

恢复时按对应的逆向算法解压;

由于 1 Byte = 8 bits ,所以每个 Byte 当中会有 8 个空格,而每个空格可以是 0, 1。压缩就是通过复杂的计算方式将没有使用的空间腾出来。最大的好处就是压缩过的文件大小变小了, 所以你的硬盘容量无形之中就可以容纳更多的数据。

2、压缩的格式

  gzip------->.gz

  bzip2 ---->.bz2

  xz  ------->.xz

2.1 gzip, zcat/zmore/zless/zgrep

[root@server0 ~]# gzip [-cdtv#] 文件名
[root@server0 ~]# zcat 文件名.gz

zcat/zmore/zless 则可以对应于cat/more/less 的方式来读取纯文本文件被压缩后的压缩文件!

选项与参数:
-c :将压缩的数据输出到屏幕上,可通过数据流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
-v :可以显示出原文件/压缩文件的压缩比等信息;
-# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6

image.png

注意:使用这种压缩方式之后源文件就不存在了,所以最好要在压缩前备份

image.png 

 

2.2 bzip2, bzcat/bzmore/bzless/bzgrep

使用方法和gzip类似,只是压缩文件的后缀为.bz2

2.3 xz, xzcat/xzmore/xzless/xzgrep

压缩文件的后缀为.xz

 

3、tar 集成备份工具

3.1 参数:

-c:创建归档

-x:释放归档

-f:指定归档文件名称

-z、-j、-J(大写):调用 .gz、.bz2、.xz 格式的工具进行处理

-t:显示归档中的文件清单

-P(大写):保持归档内文件的绝对路径

-C(大写):指定tar包释放的位置

3.2 使用 tar -c ... 命令

tar -zcf 备份文件.tar.gz 被备份的文档....

tar -jcf 备份文件.tar.bz2 被备份的文档....

tar -Jcf 备份文件.tar.xz 被备份的文档....

tar -zcf  /opt/file.tar.gz   /boot/  /home/   #将/boot /home 以gzip格式打包

tar -cf /opt/123.tar /boot     #将/boot内容打包,没有格式

gzip /opt/123.tar                  #以gzip格式解包

tar -jcf  /opt/test.tar.bz2   /boot/  /home/

tar -Jcf  /opt/abc.tar.xz    /boot/  /home/

tar -xf /opt/file.tar.gz -C /mnt/

-t:显示归档中的文件清单

-P(大写):保持归档内文件的绝对路径

实验案例:

[root@server0 ~]# rm -rf /opt/*            #为确保能清楚知道接下来发生了什么

[root@server0 ~]# echo 123456 > /opt/1.txt  

[root@server0 ~]# tar -zcPf /mnt/1.tar.gz   /opt/1.txt 

[root@server0 ~]# rm -rf /opt/1.txt     #删除/opt/1.txt

[root@server0 ~]# cd /mnt/                 #不要在/opt下解压

[root@server0 mnt]# tar -xPf 1.tar.gz    

[root@server01 mnt]# ls /opt              #发现/opt下的1.txt又回来了

总结:-P 压缩和解压是要成对出现的,如果压缩的时候写了,而解压的时候没有写,在哪个路径下解压的就在哪显示出来。

 

4、zip压缩和归档

zip :跨平台(Windows与Linux) 

命令格式:zip [-r]  /路径/备份文件.zip   /路径/被归档的文档..

[root@svr7 ~]# zip -r /opt/test01.zip  /home/ /boot/   #压缩  -r 递归处理,将指定目录下的所有文件和子目录一并处理

[root@svr7 ~]# ls /opt

[root@svr7 ~]# unzip /opt/test01.zip -d /mnt/       #解压

[root@svr7 ~]# zip -r /opt/test02.zip  /etc/selinux

[root@svr7 ~]# ls /opt

[root@svr7 ~]# unzip  /opt/test02.zip  /mnt