每天一個linux命(ming)令(ling)(32):gzip命(ming)令(ling)
減(jian)少文(wen)件大小有兩(liang)個明(ming)顯的(de)(de)好處,一是可以(yi)(yi)減(jian)少存(cun)儲(chu)空間,二(er)是通(tong)過網絡(luo)傳(chuan)輸文(wen)件時,可以(yi)(yi)減(jian)少傳(chuan)輸的(de)(de)時間。gzip是在Linux系(xi)統(tong)中(zhong)經(jing)常(chang)使用(yong)的(de)(de)一個對文(wen)件進行壓(ya)(ya)縮(suo)和解(jie)壓(ya)(ya)縮(suo)的(de)(de)命(ming)令,既方便又好用(yong)。gzip不僅可以(yi)(yi)用(yong)來壓(ya)(ya)縮(suo)大的(de)(de)、較(jiao)少使用(yong)的(de)(de)文(wen)件以(yi)(yi)節(jie)省磁盤空間,還(huan)可以(yi)(yi)和tar命(ming)令一起構成Linux操作系(xi)統(tong)中(zhong)比較(jiao)流行的(de)(de)壓(ya)(ya)縮(suo)文(wen)件格式。據統(tong)計,gzip命(ming)令對文(wen)本文(wen)件有60%~70%的(de)(de)壓(ya)(ya)縮(suo)率。
1.命令格式:
gzip[參數][文件或者目錄]
2.命(ming)令功能:
gzip是個使(shi)用廣泛的壓(ya)縮程(cheng)序(xu),文件(jian)經它(ta)壓(ya)縮過后,其名稱(cheng)后面會多出".gz"的擴展名。
3.命令參數:
-a或--ascii 使用ASCII文字模式。
-c或--stdout或--to-stdout 把(ba)壓縮后(hou)的(de)文件(jian)輸出到標準輸出設備,不去更動原始文件(jian)。
-d或--decompress或----uncompress 解開(kai)壓縮文件(jian)。
-f或--force 強行(xing)壓縮(suo)文(wen)件(jian)。不(bu)理(li)會文(wen)件(jian)名稱或硬連接(jie)是否存在(zai)以及該文(wen)件(jian)是否為(wei)符號連接(jie)。
-h或--help 在線幫助。
-l或--list 列出壓縮文件的相關信息(xi)。
-L或(huo)--license 顯(xian)示版(ban)本(ben)與版(ban)權信息。
-n或--no-name 壓縮文(wen)件時(shi),不保存原(yuan)來的文(wen)件名稱及時(shi)間戳記。
-N或--name 壓(ya)縮文(wen)(wen)件時,保存原(yuan)來的文(wen)(wen)件名稱(cheng)及(ji)時間戳記。
-q或--quiet 不(bu)顯示警(jing)告信息。
-r或--recursive 遞歸處(chu)理,將指定目錄下的所有文件及(ji)子(zi)目錄一并處(chu)理。
-S<壓縮字(zi)(zi)尾字(zi)(zi)符串>或----suffix<壓縮字(zi)(zi)尾字(zi)(zi)符串> 更改壓縮字(zi)(zi)尾字(zi)(zi)符串。
-t或(huo)--test 測試壓(ya)縮文件(jian)是否(fou)正確(que)無誤。
-v或--verbose 顯示(shi)指令執行(xing)過(guo)程。
-V或--version 顯(xian)示(shi)版本信(xin)息。
-num 用指定的數(shu)字num調整壓(ya)縮的速(su)度,-1或(huo)--fast表示最快壓(ya)縮方法(低壓(ya)縮比),-9或(huo)--best表示最慢壓(ya)縮方法(高壓(ya)縮比)。系統缺省值為6。
4.使用實例:
實(shi)例1:把test6目(mu)錄下的每個文件(jian)壓縮成.gz文件(jian)
命令:
gzip *
輸出:
[root@localhost test6]# ll
總計 604
---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log
---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
-rw-r--r-- 1 mail users 61 11-30 08:39 log2013.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2014.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2015.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2016.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2017.log
[root@localhost test6]# gzip *
[root@localhost test6]# ll
總計 28
---xr--r-- 1 root mail 1341 11-30 08:39 linklog.log.gz
---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
-rw-r--r-- 1 mail users 70 11-30 08:39 log2013.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2014.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2015.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2016.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2017.log.gz
[root@localhost test6]#
說(shuo)明:
實例2:把(ba)例1中每個壓(ya)縮的(de)文(wen)件(jian)解壓(ya),并(bing)列(lie)出詳細的(de)信息
命令:
gzip -dv *
輸出:
[root@localhost test6]# ll
總計(ji) 28
---xr--r-- 1 root mail 1341 11-30 08:39 linklog.log.gz
---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
-rw-r--r-- 1 mail users 70 11-30 08:39 log2013.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2014.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2015.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2016.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2017.log.gz
[root@localhost test6]# gzip -dv *
linklog.log.gz: 99.6% -- replaced with linklog.log
log2012.log.gz: 99.6% -- replaced with log2012.log
log2013.log.gz: 47.5% -- replaced with log2013.log
log2014.log.gz: 0.0% -- replaced with log2014.log
log2015.log.gz: 0.0% -- replaced with log2015.log
log2016.log.gz: 0.0% -- replaced with log2016.log
log2017.log.gz: 0.0% -- replaced with log2017.log
[root@localhost test6]# ll
總計 604
---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log
---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
-rw-r--r-- 1 mail users 61 11-30 08:39 log2013.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2014.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2015.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2016.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2017.log
[root@localhost test6]#
說明:
實例3:詳細顯示例1中每(mei)個壓縮(suo)的(de)文(wen)件(jian)的(de)信息,并(bing)不解壓
命(ming)令:
gzip -l *
輸(shu)出(chu):
[root@localhost test6]# gzip -l *
compressed uncompressed ratio uncompressed_name
1341 302108 99.6% linklog.log
1341 302108 99.6% log2012.log
70 61 47.5% log2013.log
32 0 0.0% log2014.log
32 0 0.0% log2015.log
32 0 0.0% log2016.log
32 0 0.0% log2017.log
2880 604277 99.5% (totals)
說明:
實例4:壓縮(suo)一個(ge)tar備份文(wen)件,此時壓縮(suo)文(wen)件的擴展名為.tar.gz
命(ming)令:
gzip -r log.tar
輸出:
[root@localhost test]# ls -al log.tar
-rw-r--r-- 1 root root 307200 11-29 17:54 log.tar
[root@localhost test]# gzip -r log.tar
[root@localhost test]# ls -al log.tar.gz
-rw-r--r-- 1 root root 1421 11-29 17:54 log.tar.gz
說(shuo)明:
實例(li)5:遞(di)歸的壓縮(suo)目錄(lu)
命(ming)令:
gzip -rv test6
輸出:
[root@localhost test6]# ll
總(zong)計(ji) 604
---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log
---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
-rw-r--r-- 1 mail users 61 11-30 08:39 log2013.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2014.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2015.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2016.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2017.log
[root@localhost test6]# cd ..
[root@localhost test]# gzip -rv test6
test6/log2014.log: 0.0% -- replaced with test6/log2014.log.gz
test6/linklog.log: 99.6% -- replaced with test6/linklog.log.gz
test6/log2015.log: 0.0% -- replaced with test6/log2015.log.gz
test6/log2013.log: 47.5% -- replaced with test6/log2013.log.gz
test6/log2012.log: 99.6% -- replaced with test6/log2012.log.gz
test6/log2017.log: 0.0% -- replaced with test6/log2017.log.gz
test6/log2016.log: 0.0% -- replaced with test6/log2016.log.gz
[root@localhost test]# cd test6
[root@localhost test6]# ll
總計(ji) 28
---xr--r-- 1 root mail 1341 11-30 08:39 linklog.log.gz
---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
-rw-r--r-- 1 mail users 70 11-30 08:39 log2013.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2014.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2015.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2016.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2017.log.gz
說明:
這(zhe)(zhe)(zhe)樣(yang)(yang),所有test下(xia)面(mian)的(de)文(wen)件都變(bian)成了*.gz,目(mu)(mu)錄(lu)(lu)依然存在只是(shi)(shi)目(mu)(mu)錄(lu)(lu)里面(mian)的(de)文(wen)件相應變(bian)成了*.gz.這(zhe)(zhe)(zhe)就是(shi)(shi)壓(ya)縮,和打包不(bu)同(tong)。因為(wei)是(shi)(shi)對目(mu)(mu)錄(lu)(lu)操作(zuo),所以需(xu)要加上-r選(xuan)項(xiang),這(zhe)(zhe)(zhe)樣(yang)(yang)也可(ke)以對子(zi)目(mu)(mu)錄(lu)(lu)進行遞歸(gui)了。
實(shi)例6:遞歸地(di)解壓目錄
命(ming)令(ling):
gzip -dr test6
輸出(chu):
[root@localhost test6]# ll
總計 28
---xr--r-- 1 root mail 1341 11-30 08:39 linklog.log.gz
---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
-rw-r--r-- 1 mail users 70 11-30 08:39 log2013.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2014.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2015.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2016.log.gz
-rw-r--r-- 1 root mail 32 11-30 08:39 log2017.log.gz
[root@localhost test6]# cd ..
[root@localhost test]# gzip -dr test6
[root@localhost test]# cd test6
[root@localhost test6]# ll
總計 604
---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log
---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
-rw-r--r-- 1 mail users 61 11-30 08:39 log2013.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2014.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2015.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2016.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2017.log
[root@localhost test6]#
說明:
關注 熵減黑客 ,一起學習成長
