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
不能压缩目录
zcat 1.txt.gz
gzip -c 1.txt > /root/1.txt.gz
gunzip -c /root/1.txt.gz > /tmp/1.txt.new
实操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文件内容