6.1 压缩打包介绍

6.2 gzip压缩工具

6.3 bzip2压缩工具

6.4 xz压缩工具



6.1  压缩打包介绍


常见压缩文件

windows .rar .zip .7z

Linux  .zip .gz .bz2 .xz .tar.gz .tar.bz2 .tar.xz


虽然后缀名在Linux上没意义,但是压缩格式应该遵循linux定义的格式来定义,以免造成错误识别。



6.2 gzip压缩工具


介绍


gzip不能压缩目录 


gzip压缩工具

gzip 1.txt
gzip -d 1.txt.gz / unzip 1.txt.gz
gzip -# 1.txt //#范围1-9,默认6

gzip -d 解压压缩包


不能压缩目录

zcat 1.txt.gz
gzip -c 1.txt > /root/1.txt.gz
gunzip -c /root/1.txt.gz > /tmp/1.txt.new

zcat 查看解压文件的文件内容

[root@AliKvn 6.1-6.4]# zcat 2.txt.gz 
111
222
333
444
555

实操test

#cd /tmp
#mkdir d6z
#cd d6z/
#ls
# find /etc/ -type f -name "*conf"
搜索/etc/下的conf结尾的文件


把搜索到的内容追加输出到1.txt下面

# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;

连续追加几次内容至1.txt 让膨胀成2.2M 左右。

# du -sh 1.txt
2.0M1.txt

使用gzip压缩1.txt

# gzip 1.txt 
# ls
1.txt.gz
#du -sh 1.txt.gz 1.txt     压缩后,文件名直接变成了1.txt.gz,且大小也变小了。
372K1.txt.gz
#wc -l 1.txt
36468 1.txt


使用gzip -d 来解压(#gunzip filename 同样是gzip的解压命令,效果效果一样)

# gzip -d 1.txt.gz
# du -sh 1.txt
1.4M1.txt

解压后发现1.txt比原来没压缩前的1.txt还要小。这是因为实际上,文件还有一些虚的空间存在着,通过压缩与解压可以把虚的空间给挤掉。如果我们觉得文件内容可能被削减了,我们可以通过#wc -l 去检查文件行数。


#wc -l 1.txt   行数没被削减,内容也应该没被削减。
36468 1.txt


压缩等级

gzip压缩等级分为1-9,默认为6级。随着级数越大,严谨性越大,如果等级设为9级,则耗用CPU资源很大。所以,一般压缩级别设置为默认级别就可以。


查看1.txt.gz文件属性。

#file 1.txt.gz
1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Thu Mar  1 14:53:39 2018

查看压缩文件的内容(原理是:先解压,再cat)

#zcat 1.txt.gz

压缩时 文件指定某个位置或某个目录下,并且不让该文件消失,生成一个新的文件。(-c选项)

#gzip -d 1.txt.gz 先解压
#gzip -c 1.txt > /tmp/1.txt.gz 指定位置
#ls/d6z/1.txt 没有消失
1.txt
# ls /tmp/1.txt.gz /tmp/下面多了一个1.txt.gz的文件
/tmp/1.txt.gz
# file /tmp/1.txt.gz 查看1.txt.gz属性
/tmp/1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Thu Mar  1 14:53:39 2018

指定解压并且保留源文件。

# gzip -d -c /tmp/1.txt.gz > /tmp/d6z/2.txt
# ls 
1.txt  2.txt
# wc -l 1.txt 2.txt 
  36468 1.txt
  36468 2.txt
  72936 总用量

其实两个文件内容都一样,源自同一个文件出来的,所以利用#wc -l查看行数是否一样检查数据是否配对。 一样的话即成功。

# du -sh *.txt
1.4M1.txt
1.4M2.txt

文件大小也是一样,由此证明,指定压缩和解压都不影响文件内容和大小。



6.3 bzip2压缩工具


用法跟gzip差不多。

# bzip2 1.txt 
#ls
1.txt.bz2  2.txt
# du -sh 1.txt.bz2 
156K1.txt.bz2从bzip2

压缩后的文件大小可以看出,bzip2的压缩有多狠,因为gzip压缩同一个文件都是300多K

# du -sh 2.txt 
1.4M2.txt

压缩之前的文件是1.4M


解压

# bzip2 -d 1.txt.bz2 
# bunzip2 1.txt.bz2

同样也支持# bzip2 -c 指定位置

#bzip2 -c 1.txt > /tmp/1.txt.bz2

默认压缩级别9

#bzip2 -9 1.txt

如果有些压缩文件没被改成压缩后缀,我们可以通过#file命令来查看属性。

[root@centos7 d6z]# ls
1.txt.bz2  2.txt  3.txt
[root@centos7 d6z]# mv 1.txt.bz2 1.txt
[root@centos7 d6z]# ls
1.txt  2.txt  3.txt
[root@centos7 d6z]# less 1.txt 
"1.txt" may be a binary file.  See it anyway?

大意是说,这是一个二进制文件,是否继续查看。

[root@centos7 d6z]# file 1.txt    通过#file可以得知这是一个bzip2文件。 
1.txt: bzip2 compressed data, block size = 900k


6.4 xz压缩工具


xz跟tar的关系比较关联。

用法与gzip,bz2差不多

xz同样也不能压缩目录


# xz 2.txt
# du -sh 1.txt.bz2 2.txt.xz 3.txt xz
压缩比bz2还要狠,压缩后的文件大小比bzip2压缩还要小。
156K1.txt.bz2
56K2.txt.xz
1.4M3.txt


解压

#xz -d 2.txt.xz
#unxz 2.txt.xz

保留原来的文件指定到位置生成压缩文件

# xz -c 2.txt > /tmp/2.txt.xz保留原来的文件,把它指定到/tmp/进行压缩,生成2.txt.xz压缩文件。
# xz -d -c /tmp/2.txt.xz > /tmp/d6z/4.txt解压缩一个2.txt.xz并且指定解压缩到/tmp/d6z,同时保留原来的压缩文件。

#xzcat /tmp/2.txt.zx查看.zx文件内容