減少檔案大小有兩個明顯的好處,一是可以減少儲存空間,二是通過網路傳輸檔案時,可以減少傳輸的時間。gzip是在Linux系統中經常使用的一個對檔案進行壓縮和解壓縮的命令,既方便又好用。gzip不僅可以用來壓縮大的、較少使用的檔案以節省磁碟空間,還可以和tar命令一起構成Linux作業系統中比較流行的壓縮檔案格式。據統計,gzip命令對文字檔案有60%~70%的壓縮率。
1.命令格式:
1 |
gzip[引數][檔案或者目錄] |
2.命令功能:
gzip是個使用廣泛的壓縮程式,檔案經它壓縮過後,其名稱後面會多出”.gz”的副檔名。
3.命令引數:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
-a或--ascii 使用ASCII文字模式。 -c或--stdout或--to-stdout 把壓縮後的檔案輸出到標準輸出裝置,不去更動原始檔案。 -d或--decompress或----uncompress 解開壓縮檔案。 -f或--force 強行壓縮檔案。不理會檔名稱或硬連線是否存在以及該檔案是否為符號連線。 -h或--help 線上幫助。 -l或--list 列出壓縮檔案的相關資訊。 -L或--license 顯示版本與版權資訊。 -n或--no-name 壓縮檔案時,不儲存原來的檔名稱及時間戳記。 -N或--name 壓縮檔案時,儲存原來的檔名稱及時間戳記。 -q或--quiet 不顯示警告資訊。 -r或--recursive 遞迴處理,將指定目錄下的所有檔案及子目錄一併處理。 -S<壓縮字尾字串>或----suffix<壓縮字尾字串> 更改壓縮字尾字串。 -t或--test 測試壓縮檔案是否正確無誤。 -v或--verbose 顯示指令執行過程。 -V或--version 顯示版本資訊。 -num 用指定的數字num調整壓縮的速度,-1或--fast表示最快壓縮方法(低壓縮比),-9或--best表示最慢壓縮方法(高壓縮比)。系統預設值為6。 |
4.使用例項:
例項1:把test6目錄下的每個檔案壓縮成.gz檔案
命令:
1 |
gzip * |
輸出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
[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]# |
說明:
例項2:把例1中每個壓縮的檔案解壓,並列出詳細的資訊
命令:
1 |
gzip -dv * |
輸出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
[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]# 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中每個壓縮的檔案的資訊,並不解壓
命令:
1 |
gzip -l * |
輸出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[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:壓縮一個tar備份檔案,此時壓縮檔案的副檔名為.tar.gz
命令:
1 |
gzip -r log.tar |
輸出:
1 2 3 4 5 6 7 8 9 |
[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 |
說明:
例項5:遞迴的壓縮目錄
命令:
1 |
gzip -rv test6 |
輸出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
[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]# 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 總計 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 |
說明:
這樣,所有test下面的檔案都變成了*.gz,目錄依然存在只是目錄裡面的檔案相應變成了*.gz.這就是壓縮,和打包不同。因為是對目錄操作,所以需要加上-r選項,這樣也可以對子目錄進行遞迴了。
例項6:遞迴地解壓目錄
命令:
1 |
gzip -dr test6 |
輸出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
[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]# |
本系列文章:
每天一個 Linux 命令(1):ls命令
每天一個 Linux 命令(2):cd命令
每天一個 Linux 命令(3):pwd命令
每天一個 Linux 命令(4):mkdir命令
每天一個 Linux 命令(5):rm 命令
每天一個 Linux 命令(6):rmdir 命令
每天一個 Linux 命令(7):mv命令
每天一個 Linux 命令(8):cp 命令
每天一個 Linux 命令(9):touch 命令
每天一個 Linux 命令(10):cat 命令
每天一個 Linux 命令(11):nl 命令
每天一個 Linux 命令(12):more 命令
每天一個 Linux 命令(13):less 命令
每天一個 Linux 命令(14):head 命令
每天一個 Linux 命令(15):tail 命令
每天一個 Linux 命令(16):which命令
每天一個 Linux 命令(17):whereis 命令
每天一個 Linux 命令(18):locate 命令
每天一個 Linux 命令(19):find 命令概覽
每天一個 Linux 命令(20):find命令之exec
每天一個 Linux 命令(21):find命令之xargs
每天一個 Linux 命令(22):find 命令的引數詳解
每天一個 Linux 命令(23):Linux 目錄結構
每天一個 Linux 命令(24):Linux 檔案型別與副檔名
每天一個 Linux 命令(25):Linux 檔案屬性詳解
每天一個 Linux 命令(26):用 SecureCRT 來上傳和下載檔案
每天一個 Linux 命令(27):linux chmod 命令
每天一個 Linux 命令(28):tar 命令
每天一個 Linux 命令(29): chgrp 命令
每天一個 Linux 命令(30): chown 命令
每天一個 Linux 命令(31): /etc/group 檔案詳解