1. 程式人生 > 其它 >4.5 Linux壓縮檔案或目錄中檔案為.gz格式(gzip命令)

4.5 Linux壓縮檔案或目錄中檔案為.gz格式(gzip命令)

gzip 是 Linux 系統中經常用來對檔案進行壓縮和解壓縮的命令,通過此命令壓縮得到的新檔案,其副檔名通常標記為“.gz”。

再強調一下,gzip 命令只能用來壓縮檔案,不能壓縮目錄,即便指定了目錄,也只能壓縮目錄內的所有檔案。

gzip 命令的基本格式如下:

[root@localhost ~]# gzip [選項] 原始檔

命令中的原始檔,當進行壓縮操作時,指的是普通檔案;當進行解壓縮操作時,指的是壓縮檔案。該命令常用的選項及含義如表 1 所示。

選項 含義
-c 將壓縮資料輸出到標準輸出中,並保留原始檔。
-d 對壓縮檔案進行解壓縮。
-r 遞迴壓縮指定目錄下以及子目錄下的所有檔案。
-v 對於每個壓縮和解壓縮的檔案,顯示相應的檔名和壓縮比。
-l 對每一個壓縮檔案,顯示以下欄位:壓縮檔案的大小;未壓縮檔案的大小;壓縮比;未壓縮檔案的名稱。
-數字 用於指定壓縮等級,-1 壓縮等級最低,壓縮比最差;-9 壓縮比最高。預設壓縮比是 -6。

【例 1】基本壓縮。
gzip 壓縮命令非常簡單,甚至不需要指定壓縮之後的壓縮包名,只需指定原始檔名即可。我們來試試:

[root@localhost ~]# gzip install.log
\#壓縮instal.log 檔案
[root@localhost ~]# ls
anaconda-ks.cfg install.log.gz install.log.syslog
\#壓縮檔案生成,但是原始檔也消失了

【例 2】保留原始檔壓縮。
在使用 gzip 命令壓縮檔案時,原始檔會消失,從而生成壓縮檔案。這時有些人會有強迫症,就逼問筆者:能不能在壓縮檔案的時候,不讓原始檔消失?好吧,也是可以的,不過很彆扭。

[root@localhost ~]# gzip -c anaconda-ks.cfg >anaconda-ks.cfg.gz
\#使用-c選項,但是不讓壓縮資料輸出到螢幕上,而是重定向到壓縮檔案中,這樣可以縮檔案的同時不刪除原始檔
[root@localhost ~]# ls
anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog
\#可以看到壓縮檔案和原始檔都存在

【例 3】 壓縮目錄。
我們可能會想當然地認為 gzip 命令可以壓縮目錄。 我們來試試:

[root@localhost ~]# mkdir test
[root@localhost ~]# touch test/test1
[root@localhost ~]# touch test/test2
[root@localhost ~]# touch test/test3 #建立測試目錄,並在裡面建立幾個測試檔案
[root@localhost ~]# gzip -r test/
\#壓縮目錄,並沒有報錯
[root@localhost ~]# ls
anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog test
\#但是檢視發現test目錄依然存在,並沒有變為壓縮檔案
[root@localhost ~]# ls test/
testl .gz test2.gz test3.gz
\#原來gzip命令不會打包目錄,而是把目錄下所有的子檔案分別壓縮

在 Linux 中,打包和壓縮是分開處理的。而 gzip 命令只會壓縮,不能打包,所以才會出現沒有打包目錄,而只把目錄下的檔案進行壓縮的情況。