1. 程式人生 > >Linux下的tar命令和gzip命令的區別與聯絡

Linux下的tar命令和gzip命令的區別與聯絡

一、windows下最常見的壓縮檔案有兩種:* .zip   和  * .rap 

      而Linux下卻有很多,讓人混淆:* .tar  、* .tar.gz 、* .tgz 、* .gz 、* .Z 、* .bz2

二、基礎概念

 1. 打包:將一堆檔案或目錄什麼的變成一個總的檔案。

 2. 壓縮:將一個大的檔案經過某種壓縮演算法變成一個小檔案。

       為什麼要區分這兩個概念呢?因為Linux中的很多壓縮程式只能針對一個檔案進行壓縮,所以當你想要壓縮一大堆檔案時,首先需要打個包,然後壓縮。

三、tar命令

1.  單獨使用(man  tar 可以檢視)

常用引數:-c  產生新的包

                 -r  像壓縮歸檔檔案末尾追加檔案

                 -u  更新原壓縮包中的檔案,僅將較新的檔案附加到存檔中

                 -t  列出存檔中檔案的目錄

                 -x  解包

                 -f  指定包的檔名,用在最後一個引數

                 -v  詳細顯示處理的檔案

基本用法:# tar -cf all.tar *.jpg
                 這條命令是將所有.jpg的檔案打成一個名為all.tar的包。-c是表示產生新的包,-f指定包的檔名。
                 # tar -rf all.tar *.gif
                 這條命令是將所有.gif的檔案增加到all.tar的包裡面去。-r是表示增加檔案的意思。
                 # tar -uf all.tar logo.gif
                 這條命令是更新原來tar包all.tar中logo.gif檔案,-u是表示更新檔案的意思。
                 # tar -tf all.tar 
                 這條命令是列出all.tar包中所有檔案,-t是列出檔案的意思

                 # tar -xf all.tar

                這條命令是解出all.tar包中所有檔案,-x是解開的意思

2. 為了方便使用者在打包解包的同時壓縮或解壓檔案,tar命令提供了一種特殊的功能,就是可以在打包解包的同時呼叫其他的壓縮程式,比如:gzip,bzip2等。

擴充套件用法:1) tar呼叫gzip

                gzip是GNU組織開發的一個壓縮程式,.gz結尾的檔案就是gzip壓縮的結果。與gzip相對的解壓程式是gunzip。 tar中使用-z這個引數來呼叫gzip。下面來舉例說明一下:

                # tar -czf all.tar.gz *.jpg
                   這條命令是將所有.jpg的檔案打成一個tar包,並且將其用gzip壓縮,生成一個gzip壓縮過的包,包名為all.tar.gz
                # tar -xzf all.tar.gz
                    這條命令是將上面產生的包解開。
            2) tar呼叫bzip2
                bzip2是一個壓縮能力更強的壓縮程式,.bz2結尾的檔案就是bzip2壓縮的結果。與bzip2相對的解壓程式是bunzip2。tar中使用-j這個引數來呼叫gzip。下面來舉例說明一下:
                # tar -cjf all.tar.bz2 *.jpg
                這條命令是將所有.jpg的檔案打成一個tar包,並且將其用bzip2壓縮,生成一個bzip2壓縮過的包,包名為all.tar.bz2
                # tar -xjf all.tar.bz2

                這條命令是將上面產生的包解開

四、gzip命令

1.  (1)預設情況下,  gzip  將原始檔名和時間資訊儲存在壓縮後的檔案中。

     (2)gunzip  的功能  與  gzip  -d  功能一樣。gunzip 將命令列中以.gz, -gz, .z, -z, _z 或 .Z結尾並具有正確標誌頭的檔案
       解壓縮,並以去掉副檔名的解壓縮檔案替換原檔案。  gunzip 也能識別副檔名為  .tgz  和  .taz  的檔案,並將其分別當作  .tar.gz  和   .tar.Z   的縮寫。gunzip 目前能夠解壓由  gzip,  zip,  compress,  compress  -H  以及  pack產生的檔案。 對輸入格式的檢測是自動的。

2.(man  gzip)可以看到詳細的內容,這裡簡單列出常用的引數:

        -c   將結果寫到標準輸出,原檔案保持不變

        -d  解壓縮

        -l  列出每個壓縮檔案的如下專案:

                compressed  size:壓縮檔案的長度

                uncompressed  size:壓縮前檔案的長度

                ratio:壓縮率(如果未知則為0.0%)

                uncompressed_name:壓縮前的檔名

        對於非gzip 格式的檔案,壓縮前檔案長度顯示為 -1,例如由compress壓縮的 .Z檔案。可用下列命令得到這種檔案壓縮前的長度:

        zcat   file.Z  |  wc  -c    (zcat 的功能與 gunzip -c.  相同。)

        如果同時指定了 --verbose選項,下列專案也被列出:

            method:壓縮方式

            crc:未壓縮資料的32位CRC校驗碼

            date  &  time:壓縮前檔案的時間資訊

目前支援的壓縮方式有deflate、compress、lzh(SCO下的compress-H)以及pack等方式。對於非gzip格式的檔案,crc校驗碼顯示為ffffffff。

        -r  遞迴式地查詢指定目錄並壓縮其中的所有檔案或者是解壓縮。

    -t  測試,檢查壓縮檔案是否完整。

    -v  對每一個壓縮和解壓的檔案,顯示檔名和壓縮比。