1.linux下的文件压缩工具: gzip bzip2 xz tar
1.1:linux压缩的目的:
节省空间:对于磁盘而言:
方便传输: 节约带宽 :
1.2:linux下的文件格式: zip, gz, bz2, xz, tar.gz, tar.bz2, tar.xz,
2.gzip压缩工具:(注:不能压缩目录)
解压缩使用格式:
gzip filename #压缩文件
gzip -d filename.gz #解压缩文件 === gunzip filename.gz
[root@localhost d6z]# gzip 1.txt #第一种方式用gzip格式压缩1.txt:压缩级别6:
[root@localhost d6z]# du -sh 1.txt.gz #查询文件大小:
596K 1.txt.gz
[root@localhost d6z]# gzip -d 1.txt.gz #第一种方式解压1.txt.
[root@localhost d6z]# wc -l 1.txt #第一次查询文件的内容行数:
61516 1.txt
[root@localhost d6z]# gzip -1 1.txt #用压缩级别1(不严谨)来压缩(1-9,默认压缩级别为6:)
[root@localhost d6z]# du -sh 1.txt.gz #第二次查询文件大小,
692K 1.txt.gz
[root@localhost d6z]# gunzip 1.txt.gz #使用第二种方式解压1.txt.
[root@localhost d6z]# ls
1.txt 2.txt 3.txt 4.txt
[root@localhost d6z]# wc -l 1.txt #第二次查询文件内容行数:
61516 1.txt
如图:linux的压缩级别有1-9:1是最不严谨,9是最严谨的,压缩强度最狠:
图示第一次使用是默认6模式,第二次使用的是1模式:发现第二次压缩文件变大:
2.1:当文件压缩后,有时候会忘记写后缀名:我们可以通过下面的两个命令来查询:
file filename.gz #查看文件格式:
zcat filename.gz #查看文件内容:
[root@localhost d6z]# ls #查看文件内容:
1.txt.gz 2.txt 3.txt 4.txt
[root@localhost d6z]# file 1.txt.gz #查看文件格式:
1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Sat Jun 23 22:25:53 2018
[root@localhost d6z]# zcat 1.txt.gz |head -5 #查看文件内容并查找前5行:
#
# /etc/nsswitch.conf
#
2.2:gzip默认压缩后是不保留源文件:而使用以下选项可以保留源文件:
“-c”: 压缩后保留源文件:格式如下:
gzip -c filename > /tmp/filename.gz #压缩1.txt到tmp目录下,并保留源文件:
gzip -d -c /tmp/filename.gz filename #解压缩文件并至当前目录:
[root@localhost d6z]# gzip -c 1.txt > /tmp/1.txt.gz #压缩文件5.txt到/tmp目录下,并保留源文件:
[root@localhost d6z]# ls /tmp/1.txt.gz #查看压缩后文件:
/tmp/1.txt.gz
[root@localhost d6z]# gzip -c -d /tmp/1.txt.gz > ./5.txt #解压缩/tmp目录下的文件到当前目录下:
[root@localhost d6z]# ls
1.txt 2.txt 3.txt 4.txt 5.txt
#注意:当解压缩时,解压到当前目录下的文件,并且当前目录的文件已存在,是会直接覆盖,不会询问:
"-df" 选项:解压缩时当目标源文件已存在,可强制覆盖源文件:
[root@localhost d6z]# gzip -c 1.txt > 1.txt.gz #压缩文件1.txt后,并保留源文件:
[root@localhost d6z]# ls
1.txt 1.txt.gz 2.txt 3.txt 4.txt 5.txt
[root@localhost d6z]# gunzip 1.txt.gz #当1.txt存在,并且强制解压源文件,会提示是否覆盖:
gzip: 1.txt already exists; do you wish to overwrite (y or n)? ^C
[root@localhost d6z]# gunzip -df 1.txt.gz #使用-df选项,则不提示是否覆盖:
3、bzip2压缩工具 (不支持压缩目录)
命令格式: bzip2 [-dz] filename
bzip2 filename #压缩文件 ==== bzip -z filename
bzip2 -d filename.bz2 #解压缩文件 ==== bunzip filename.bz2
[root@localhost d6z]# bzip2 1.txt #使用第一种方式压缩1.txt.
[root@localhost d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt 5.txt
[root@localhost d6z]# du -sh 1.txt.bz2 #本次使用的默认压缩级别9:压缩后大小为172K:
172K 1.txt.bz2
[root@localhost d6z]# bzip2 -d 1.txt.bz2 #使用第一种方式解压缩1.txt.
[root@localhost d6z]# bzip2 -z -1 1.txt #使用第二种方式"-z"压缩1.txt:压缩级别是1:
[root@localhost d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt 5.txt
[root@localhost d6z]# du -sh 1.txt.bz2 #查看其文件大小为536K:比9级别的大很多:
536K 1.txt.bz2
[root@localhost d6z]# bunzip2 1.txt.bz2 #使用第二种方式解压缩1.txt:
注意:bzip2的压缩级别有1-9,默认级别是9:如图也是压缩最恨的,压缩时,加不加"z"都可以:
3.2 : bzip2默认压缩后不保留源文件,可以使用下列选项:
"-c" :压缩后保留源文件: 同gzip的相等:
使用格式如下:
bzip2 -c filename > /tmp/filename.bz2 #压缩文件到/tmp目录下,并保留源文件:
bzip2 -d -c /tmp/filename.bz2 > ./filename.txt #解压缩文件到当前目录下:
[root@localhost d6z]# bzip2 -c 1.txt > /tmp/1.txt.bz2 #压缩1.txt文件,并保留源文件:
[root@localhost d6z]# ls -ld /tmp/1.txt.bz2 #查看压缩后文件所在的目录:
-rw-r--r-- 1 root root 14 Jun 25 00:36 /tmp/1.txt.bz2
[root@localhost d6z]# bzip2 -d -c /tmp/1.txt.bz2 > ./1.txt #解压缩文件,并保留源文件:
[root@localhost d6z]# ls
1.txt 2.txt 3.txt 4.txt 5.txt 6.txt
注意:bzip2解压后,解压缩到之前源文件所在的目录,会自动覆盖源文件:
3.3:bzip2压缩后也支持查看文件格式和文件内容:
file 1.txt.bz2 #查看文件格式:
bzcat 1.txt.bz2 #查看文件内容:
[root@localhost d6z]# file 1.txt.bz2 #查看文件系统格式:
1.txt.bz2: bzip2 compressed data, block size = 900k #看到此文件是bzip类型:
[root@localhost d6z]# bzcat 1.txt.bz2 |head -5
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
4:xz压缩文件格式:默认压缩级别是“6”
命令格式:
xz filename #压缩文件 ==== xz -z filename
unxz filename.xz #解压缩文件 ==== xz -d filename.xz
[root@localhost d6z]# xz 1.txt #第一种方式压缩文件1.txt:
[root@localhost d6z]# ls
1.txt.xz 3.txt 4.txt 5.txt 6.txt
[root@localhost d6z]# du -sh 1.txt.xz #查看压缩后文件大小,可以看出来压缩的更狠:
40K 1.txt.xz
[root@localhost d6z]# unxz 1.txt.xz #第一种方式解压缩文件1.txt.xz:
[root@localhost d6z]# ls
1.txt 3.txt 4.txt 5.txt 6.txt
[root@localhost d6z]# xz -z 1.txt #第二种方式压缩文件1.txt:
[root@localhost d6z]# xz -d 1.txt.xz #第二种方式解压缩文件1.txt.xz:
4.2:xz压缩格式默认也不保留源文件,同gzip bzip2一样,也是有“-c”选项:
xz -c 1.txt > /tmp/1.txt.xz #压缩1.txt文件到/tmp目录下为xz格式,保留源文件:
xz -c /tmp/1.txt.xz > ./1.txt #解压缩/tmp目录下的1.txt.xz到当前目录下的1.txt:
[root@localhost d6z]# xz -c 1.txt > 1.txt.xz #用xz格式把1.txt压缩,并保留源文件:
[root@localhost d6z]# ls #查看:
1.txt 1.txt.xz
[root@localhost d6z]# xz -c 1.txt.xz > 1.txt #用xz格式把1.txt文件解压缩:并强制覆盖:
注:当解压缩时,当目标文件已存在,会提示”文件已存在“,则需用到“-df”选项了:
[root@localhost d6z]# xz -d 1.txt.xz
xz: 1.txt: File exists
[root@localhost d6z]# ls
1.txt 1.txt.xz
[root@localhost d6z]# xz -df 1.txt.xz
[root@localhost d6z]# ls
1.txt
4.3:xz也支持查看压缩文件格式:和文件内容:用法同gzip和bzip2 相同:
[root@localhost d6z]# file 1.txt
1.txt: XZ compressed data
[root@localhost d6z]# xzcat 1.txt.xz
11111
总结:
gzip : [ -d -(1-9) -c ] gunzip
bzip2: [-z -d -(1-9) -c ] bunzip2
xz : [-z -d -c ] unxz
查看格式的命令:file filename
查看内容的命令为: zcat bzcat xzcat
xz > bzip2 > gzip