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 對每一個壓縮和解壓的檔案,顯示檔名和壓縮比。