减少文件大小有两个明显的好处。一是可以减少存储的空间,二是通过网络传输文件时,可以减少传输的时间;
gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压的命令,既方便又好用。
gzip 不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和 tar 命令一起构成 Linux 操作系统中比较流行的压缩文件格式。据统计,gzip 命令对文本有 60%~70% 的压缩率;
命令格式 - gzip [参数] [文件或目录]
命令功能 - gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出 .gz 的扩展名
命令参数 -
命令实例
实例一:把test6目录下的每个文件压缩成.gz文件
命令
xxxxxxxxxx11gzip *输出
xxxxxxxxxx201[root@localhost test6]# ll2总计 6043---xr--r-- 1 root mail  302108 11-30 08:39 linklog.log4---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log5-rw-r--r-- 1 mail users     61 11-30 08:39 log2013.log6-rw-r--r-- 1 root mail       0 11-30 08:39 log2014.log7-rw-r--r-- 1 root mail       0 11-30 08:39 log2015.log8-rw-r--r-- 1 root mail       0 11-30 08:39 log2016.log9-rw-r--r-- 1 root mail       0 11-30 08:39 log2017.log10[root@localhost test6]# gzip *11[root@localhost test6]# ll12总计 2813---xr--r-- 1 root mail  1341 11-30 08:39 linklog.log.gz14---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz15-rw-r--r-- 1 mail users   70 11-30 08:39 log2013.log.gz16-rw-r--r-- 1 root mail    32 11-30 08:39 log2014.log.gz17-rw-r--r-- 1 root mail    32 11-30 08:39 log2015.log.gz18-rw-r--r-- 1 root mail    32 11-30 08:39 log2016.log.gz19-rw-r--r-- 1 root mail    32 11-30 08:39 log2017.log.gz20[root@localhost test6]#实例二:把例1中的每个压缩文件解压,并列出详细的信息
命令
xxxxxxxxxx11gzip -dv *输出
xxxxxxxxxx271[root@localhost test6]# ll2总计 283---xr--r-- 1 root mail  1341 11-30 08:39 linklog.log.gz4---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz5-rw-r--r-- 1 mail users   70 11-30 08:39 log2013.log.gz6-rw-r--r-- 1 root mail    32 11-30 08:39 log2014.log.gz7-rw-r--r-- 1 root mail    32 11-30 08:39 log2015.log.gz8-rw-r--r-- 1 root mail    32 11-30 08:39 log2016.log.gz9-rw-r--r-- 1 root mail    32 11-30 08:39 log2017.log.gz10[root@localhost test6]# gzip -dv *11linklog.log.gz:  99.6% -- replaced with linklog.log12log2012.log.gz:  99.6% -- replaced with log2012.log13log2013.log.gz:  47.5% -- replaced with log2013.log14log2014.log.gz:   0.0% -- replaced with log2014.log15log2015.log.gz:   0.0% -- replaced with log2015.log16log2016.log.gz:   0.0% -- replaced with log2016.log17log2017.log.gz:   0.0% -- replaced with log2017.log18[root@localhost test6]# ll19总计 60420---xr--r-- 1 root mail  302108 11-30 08:39 linklog.log21---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log22-rw-r--r-- 1 mail users     61 11-30 08:39 log2013.log23-rw-r--r-- 1 root mail       0 11-30 08:39 log2014.log24-rw-r--r-- 1 root mail       0 11-30 08:39 log2015.log25-rw-r--r-- 1 root mail       0 11-30 08:39 log2016.log26-rw-r--r-- 1 root mail       0 11-30 08:39 log2017.log27[root@localhost test6]#实例三:详细列出例1中的每个压缩的文件的信息,并不解压
命令
xxxxxxxxxx11gzip -l *输出
xxxxxxxxxx101[root@localhost test6]# gzip -l *2         compressed        uncompressed  ratio uncompressed_name3               1341              302108  99.6% linklog.log4               1341              302108  99.6% log2012.log5                 70                  61  47.5% log2013.log6                 32                   0   0.0% log2014.log7                 32                   0   0.0% log2015.log8                 32                   0   0.0% log2016.log9                 32                   0   0.0% log2017.log10               2880              604277  99.5% (totals)实例四:压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz
命令
xxxxxxxxxx11gzip -r log.tar输出
xxxxxxxxxx51[root@localhost test]# ls -al log.tar2-rw-r--r-- 1 root root 307200 11-29 17:54 log.tar3[root@localhost test]# gzip -r log.tar4[root@localhost test]# ls -al log.tar.gz 5-rw-r--r-- 1 root root 1421 11-29 17:54 log.tar.gz实例五:递归的压缩目录
命令
xxxxxxxxxx11gzip -rv test6输出
xxxxxxxxxx281[root@localhost test6]# ll2总计 6043---xr--r-- 1 root mail  302108 11-30 08:39 linklog.log4---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log5-rw-r--r-- 1 mail users     61 11-30 08:39 log2013.log6-rw-r--r-- 1 root mail       0 11-30 08:39 log2014.log7-rw-r--r-- 1 root mail       0 11-30 08:39 log2015.log8-rw-r--r-- 1 root mail       0 11-30 08:39 log2016.log9-rw-r--r-- 1 root mail       0 11-30 08:39 log2017.log10[root@localhost test6]# cd ..11[root@localhost test]# gzip -rv test612test6/log2014.log:        0.0% -- replaced with test6/log2014.log.gz13test6/linklog.log:       99.6% -- replaced with test6/linklog.log.gz14test6/log2015.log:        0.0% -- replaced with test6/log2015.log.gz15test6/log2013.log:       47.5% -- replaced with test6/log2013.log.gz16test6/log2012.log:       99.6% -- replaced with test6/log2012.log.gz17test6/log2017.log:        0.0% -- replaced with test6/log2017.log.gz18test6/log2016.log:        0.0% -- replaced with test6/log2016.log.gz19[root@localhost test]# cd test620[root@localhost test6]# ll21总计 2822---xr--r-- 1 root mail  1341 11-30 08:39 linklog.log.gz23---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz24-rw-r--r-- 1 mail users   70 11-30 08:39 log2013.log.gz25-rw-r--r-- 1 root mail    32 11-30 08:39 log2014.log.gz26-rw-r--r-- 1 root mail    32 11-30 08:39 log2015.log.gz27-rw-r--r-- 1 root mail    32 11-30 08:39 log2016.log.gz28-rw-r--r-- 1 root mail    32 11-30 08:39 log2017.log.gz说明
这样,所有 test 下面的文件都变成了 *.gz ,目录依然存在,只是目录里面的文件相应变成了 *.gz ,这就是压缩,和打包不同。因为是对目录操作,所以需要加上 -r 选项,这样也可以对子目录进行递归了。
实例六:递归的解压目录
命令
xxxxxxxxxx11gzip -dr test6输出
xxxxxxxxxx431[root@localhost test6]# ll2总计 283---xr--r-- 1 root mail  1341 11-30 08:39 linklog.log.gz4---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz5-rw-r--r-- 1 mail users   70 11-30 08:39 log2013.log.gz6-rw-r--r-- 1 root mail    32 11-30 08:39 log2014.log.gz7-rw-r--r-- 1 root mail    32 11-30 08:39 log2015.log.gz8-rw-r--r-- 1 root mail    32 11-30 08:39 log2016.log.gz9-rw-r--r-- 1 root mail    32 11-30 08:39 log2017.log.gz10[root@localhost test6]# cd ..11[root@localhost test]# gzip -dr test612[root@localhost test]# cd test613[root@localhost test6]# ll14总计 60415---xr--r-- 1 root mail  302108 11-30 08:39 linklog.log16---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log17-rw-r--r-- 1 mail users     61 11-30 08:39 log2013.log18-rw-r--r-- 1 root mail       0 11-30 08:39 log2014.log19-rw-r--r-- 1 root mail       0 11-30 08:39 log2015.log20-rw-r--r-- 1 root mail       0 11-30 08:39 log2016.log21-rw-r--r-- 1 root mail       0 11-30 08:39 log2017.log22[root@localhost test6]#