减少文件大小有两个明显的好处。一是可以减少存储的空间,二是通过网络传输文件时,可以减少传输的时间;
gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压的命令,既方便又好用。
gzip 不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和 tar 命令一起构成 Linux 操作系统中比较流行的压缩文件格式。据统计,gzip 命令对文本有 60%~70% 的压缩率;
命令格式 - gzip [参数] [文件或目录]
命令功能 - gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出 .gz 的扩展名
命令参数 -
命令实例
实例一:把test6目录下的每个文件压缩成.gz文件
命令
xxxxxxxxxx
11gzip *
输出
xxxxxxxxxx
201[root@localhost test6]# ll
2总计 604
3---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log
4---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
5-rw-r--r-- 1 mail users 61 11-30 08:39 log2013.log
6-rw-r--r-- 1 root mail 0 11-30 08:39 log2014.log
7-rw-r--r-- 1 root mail 0 11-30 08:39 log2015.log
8-rw-r--r-- 1 root mail 0 11-30 08:39 log2016.log
9-rw-r--r-- 1 root mail 0 11-30 08:39 log2017.log
10[root@localhost test6]# gzip *
11[root@localhost test6]# ll
12总计 28
13---xr--r-- 1 root mail 1341 11-30 08:39 linklog.log.gz
14---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
15-rw-r--r-- 1 mail users 70 11-30 08:39 log2013.log.gz
16-rw-r--r-- 1 root mail 32 11-30 08:39 log2014.log.gz
17-rw-r--r-- 1 root mail 32 11-30 08:39 log2015.log.gz
18-rw-r--r-- 1 root mail 32 11-30 08:39 log2016.log.gz
19-rw-r--r-- 1 root mail 32 11-30 08:39 log2017.log.gz
20[root@localhost test6]#
实例二:把例1中的每个压缩文件解压,并列出详细的信息
命令
xxxxxxxxxx
11gzip -dv *
输出
xxxxxxxxxx
271[root@localhost test6]# ll
2总计 28
3---xr--r-- 1 root mail 1341 11-30 08:39 linklog.log.gz
4---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
5-rw-r--r-- 1 mail users 70 11-30 08:39 log2013.log.gz
6-rw-r--r-- 1 root mail 32 11-30 08:39 log2014.log.gz
7-rw-r--r-- 1 root mail 32 11-30 08:39 log2015.log.gz
8-rw-r--r-- 1 root mail 32 11-30 08:39 log2016.log.gz
9-rw-r--r-- 1 root mail 32 11-30 08:39 log2017.log.gz
10[root@localhost test6]# gzip -dv *
11linklog.log.gz: 99.6% -- replaced with linklog.log
12log2012.log.gz: 99.6% -- replaced with log2012.log
13log2013.log.gz: 47.5% -- replaced with log2013.log
14log2014.log.gz: 0.0% -- replaced with log2014.log
15log2015.log.gz: 0.0% -- replaced with log2015.log
16log2016.log.gz: 0.0% -- replaced with log2016.log
17log2017.log.gz: 0.0% -- replaced with log2017.log
18[root@localhost test6]# ll
19总计 604
20---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log
21---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
22-rw-r--r-- 1 mail users 61 11-30 08:39 log2013.log
23-rw-r--r-- 1 root mail 0 11-30 08:39 log2014.log
24-rw-r--r-- 1 root mail 0 11-30 08:39 log2015.log
25-rw-r--r-- 1 root mail 0 11-30 08:39 log2016.log
26-rw-r--r-- 1 root mail 0 11-30 08:39 log2017.log
27[root@localhost test6]#
实例三:详细列出例1中的每个压缩的文件的信息,并不解压
命令
xxxxxxxxxx
11gzip -l *
输出
xxxxxxxxxx
101[root@localhost test6]# gzip -l *
2 compressed uncompressed ratio uncompressed_name
3 1341 302108 99.6% linklog.log
4 1341 302108 99.6% log2012.log
5 70 61 47.5% log2013.log
6 32 0 0.0% log2014.log
7 32 0 0.0% log2015.log
8 32 0 0.0% log2016.log
9 32 0 0.0% log2017.log
10 2880 604277 99.5% (totals)
实例四:压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz
命令
xxxxxxxxxx
11gzip -r log.tar
输出
xxxxxxxxxx
51[root@localhost test]# ls -al log.tar
2-rw-r--r-- 1 root root 307200 11-29 17:54 log.tar
3[root@localhost test]# gzip -r log.tar
4[root@localhost test]# ls -al log.tar.gz
5-rw-r--r-- 1 root root 1421 11-29 17:54 log.tar.gz
实例五:递归的压缩目录
命令
xxxxxxxxxx
11gzip -rv test6
输出
xxxxxxxxxx
281[root@localhost test6]# ll
2总计 604
3---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log
4---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
5-rw-r--r-- 1 mail users 61 11-30 08:39 log2013.log
6-rw-r--r-- 1 root mail 0 11-30 08:39 log2014.log
7-rw-r--r-- 1 root mail 0 11-30 08:39 log2015.log
8-rw-r--r-- 1 root mail 0 11-30 08:39 log2016.log
9-rw-r--r-- 1 root mail 0 11-30 08:39 log2017.log
10[root@localhost test6]# cd ..
11[root@localhost test]# gzip -rv test6
12test6/log2014.log: 0.0% -- replaced with test6/log2014.log.gz
13test6/linklog.log: 99.6% -- replaced with test6/linklog.log.gz
14test6/log2015.log: 0.0% -- replaced with test6/log2015.log.gz
15test6/log2013.log: 47.5% -- replaced with test6/log2013.log.gz
16test6/log2012.log: 99.6% -- replaced with test6/log2012.log.gz
17test6/log2017.log: 0.0% -- replaced with test6/log2017.log.gz
18test6/log2016.log: 0.0% -- replaced with test6/log2016.log.gz
19[root@localhost test]# cd test6
20[root@localhost test6]# ll
21总计 28
22---xr--r-- 1 root mail 1341 11-30 08:39 linklog.log.gz
23---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
24-rw-r--r-- 1 mail users 70 11-30 08:39 log2013.log.gz
25-rw-r--r-- 1 root mail 32 11-30 08:39 log2014.log.gz
26-rw-r--r-- 1 root mail 32 11-30 08:39 log2015.log.gz
27-rw-r--r-- 1 root mail 32 11-30 08:39 log2016.log.gz
28-rw-r--r-- 1 root mail 32 11-30 08:39 log2017.log.gz
说明
这样,所有 test 下面的文件都变成了 *.gz ,目录依然存在,只是目录里面的文件相应变成了 *.gz ,这就是压缩,和打包不同。因为是对目录操作,所以需要加上 -r 选项,这样也可以对子目录进行递归了。
实例六:递归的解压目录
命令
xxxxxxxxxx
11gzip -dr test6
输出
xxxxxxxxxx
431[root@localhost test6]# ll
2总计 28
3---xr--r-- 1 root mail 1341 11-30 08:39 linklog.log.gz
4---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
5-rw-r--r-- 1 mail users 70 11-30 08:39 log2013.log.gz
6-rw-r--r-- 1 root mail 32 11-30 08:39 log2014.log.gz
7-rw-r--r-- 1 root mail 32 11-30 08:39 log2015.log.gz
8-rw-r--r-- 1 root mail 32 11-30 08:39 log2016.log.gz
9-rw-r--r-- 1 root mail 32 11-30 08:39 log2017.log.gz
10[root@localhost test6]# cd ..
11[root@localhost test]# gzip -dr test6
12[root@localhost test]# cd test6
13[root@localhost test6]# ll
14总计 604
15---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log
16---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
17-rw-r--r-- 1 mail users 61 11-30 08:39 log2013.log
18-rw-r--r-- 1 root mail 0 11-30 08:39 log2014.log
19-rw-r--r-- 1 root mail 0 11-30 08:39 log2015.log
20-rw-r--r-- 1 root mail 0 11-30 08:39 log2016.log
21-rw-r--r-- 1 root mail 0 11-30 08:39 log2017.log
22[root@localhost test6]#