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压缩工具


介绍

6.1-6.4 压缩打包介绍,压缩工具gzip,bzip2, xz_linux


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结尾的文件

6.1-6.4 压缩打包介绍,压缩工具gzip,bzip2, xz_linux_02


把搜索到的内容追加输出到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压缩工具


6.1-6.4 压缩打包介绍,压缩工具gzip,bzip2, xz_linux_03

用法跟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压缩工具


6.1-6.4 压缩打包介绍,压缩工具gzip,bzip2, xz_linux_04

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文件内容