對於剛剛接觸linux的人來說,一定會給linux下一大堆各式各樣的檔名給搞暈。別個不說,單單就壓縮檔案為例,我們知道在windows下最常見 的壓縮檔案就只有兩種,一是,zip,另乙個是.rar。可是linux就不同了,它有.gz、.tar.gz、tgz、bz2、.z、.tar等眾多的 壓縮檔案名,此外windows下的.zip和.rar也可以在linux下使用,不過在linux使用.zip和.rar的人就太少了。本文就來對這些 常見的壓縮檔案進行一番小結,希望你下次遇到這些檔案時不至於被搞暈。
在具體總結各類壓縮檔案之前呢,首先要弄清兩個概念:打包和壓縮。打包是指將一大堆檔案或目錄什麼的變成乙個總的檔案,壓縮則是將乙個大的檔案通過一些壓 縮演算法變成乙個小檔案。為什麼要區分這兩個概念呢?其實這源於linux中的很多壓縮程式只能針對乙個檔案進行壓縮,這樣當你想要壓縮一大堆檔案時,你就 得先借助另它的工具將這一大堆檔案先打成乙個包,然後再就原來的壓縮程式進行壓縮。
zip
zip可能是目前使用得最多的文件壓縮格式。它最大的優點就是在不同的作業系統平台,比如linux, windows以及mac os,上使用。缺點就是支援的壓縮率不是很高,而tar.gz和tar.gz2在壓縮率方面做得非常好。閒話少說,我們步入正題吧:
linux下提供了zip和unzip程式,zip是壓縮程式,unzip是解壓程式。常用命令選項:
-d 從壓縮檔案內刪除指定的檔案,要解壓到指定目錄需要在目錄前指定-d。
-m 將檔案壓縮並加入壓縮檔案後,刪除原始檔案,即把檔案移到壓縮檔案中。
-q 不顯示指令執行過程。
-r 遞迴處理,將指定目錄下的所有檔案和子目錄一併處理。
-s 包含系統和隱藏檔案
-v 顯示指令執行過程或顯示版本資訊。
-i《範本樣式》 只壓縮符合條件的檔案。
-x《範本樣式》 壓縮時排除符合條件的檔案。
-n 《字尾字串》 不壓縮具有特定字尾字串的檔案。
-《壓縮效率》 壓縮效率是乙個介於1-9的 數值。
舉例:
zip -r mydata.zip mydata //將mydata目錄壓縮為mydata.zip
unzip mydata.zip -d mydatabak //
將mydata.zip解壓到mydatabak目錄,注意要-d
unzip mydata.zip //
將mydata.zip解壓到當前mydata目錄
unzip dsw\*.zip //
將dsw目錄下的所有zip檔案解壓到dsw目錄下
unzip -v wwwroot.zip //檢視wwwroot.zip裡面的內容
rar
tar -xzpvf rarlinux-3.2.0.tar.gz
cd rar
make
這樣就安裝好了,安裝後就有了rar和unrar這兩個程式,rar是壓縮程式,unrar是解壓程式。
rar x vpsyou.rar //解壓 vpsyou.rar 到當前目錄
將 vpsyou.com 目錄打包為 vpsyou.rar
rar c test.rar //
rar d test.rar file1.txt //從test.rar包中刪除file1.txt
rar e test.rar //不能儲存當前目錄結構,所有檔案都在本目錄
rar x test.rar //解壓出來會儲存目錄結構
a 新增檔案到操作文件
c 對操作文件新增說明注釋
d 從文件中刪除檔案
e 將檔案解壓到當前目錄(所有的檔案被解壓到當前目錄,不能保持壓縮前的目錄結構,如果想保持壓縮前的目錄結構,用x解壓)
x 帶路徑解壓文件中內容到當前目錄
tar
tar是在linux中使用得非常廣泛的文件打包格式。它的好處就是它只消耗非常少的cpu以及時間去打包檔案,他僅僅只是乙個打包工具,並不負責壓縮。
如何打包:
# tar -cvf archive_name.tar directory_to_compress
如何解包:
# tar -xvf archive_name.tar /tmp/ //後面解壓路徑為null時,預設解壓到當前路徑
常用引數:
-c 建立新的歸檔檔案
-r 向歸檔檔案末尾追加檔案
-x 從歸檔檔案中解出檔案
可以這樣記憶,建立新的檔案是c,追加在原有檔案上用r,從檔案中解壓出用x
-t 檢視內容
-o 將檔案解開到標準輸出
-v 處理過程中輸出相關資訊
-f 對普通檔案操作 //似乎一直都要用f,不然的話,可能會不顯示
-j 呼叫bzip2來壓縮歸檔檔案
-z 呼叫gzip來壓縮歸檔檔案,與-x聯用時呼叫gzip完成解壓縮
-z 呼叫compress來壓縮歸檔檔案,與-x聯用時呼叫compress完成解壓縮
-p :使用原檔案的原來屬性(屬性不會依據使用者而變)
-p :可以使用絕對路徑來壓縮!
-n :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的檔案中!
--exclude file:在壓縮的過程中,不要將 file 打包!
舉例:
tar cvf dsw.tar dsw //將dsw檔案打包為tar檔案tar czvf dsw.tar.gz dsw //
z結合c時,表示將檔案打包為tar.gz格式
tar xzvf dsw.tar.gz //
z結合x時,表示將檔案從.tar.gz包中解壓
tar zxvf dsw.tar.gz -c builds //指定解壓dsw到builds目錄,注意需要-c
tar zcvfp back.tar.gz ./new
//打包new目錄下所有檔案,並保留其原有屬性
tar -zcvf file.tar.gz ./new/ --exclude ./new/tmp //
打包new目錄下除tmp之外的所有資料夾
tar.gz tar.z tar.bz2
tar.gz這種格式是我使用得最多的壓縮格式。它在壓縮時不會占用太多cpu的,而且可以得到乙個非常理想的壓縮率。與gzip相對的解壓程式是gunzip
compress也是乙個壓縮程式,但是好象使用compress的人不如gzip和bzip2的人多,z結尾的檔案就是bzip2壓縮的結果.與 compress相對的解壓程式是uncompress ,tar中使用-z這個引數來呼叫compress。
bzip2是乙個壓縮能力更強的壓縮程式,.bz2結尾的檔案就是bzip2壓縮的結果,這種壓縮格式是我們提到的所有方式中壓縮率最好的。當然,這也就意味著,它比前面的方式要占用更多的cpu與時間。與bzip2相對的解壓程式是bunzip2,tar中使用-j這個引數來呼叫gzip
注意:請注意z和z與tar中c(歸檔),x(解壓)配合使用
z + c = 將檔案打包並使用gzip壓縮為tar.gz
z + x = 將壓縮包使用gzip將包解壓
z + c = 將檔案打包並使用compress壓縮為tar.z
z + x = 將壓縮包使用compress解壓
j + c = 將檔案打包並使用bzip2壓縮為tar.bz2
j + x = 將壓縮包使用gzip將包解壓
解壓縮:
將所有.jpg檔案打成tar包,並且其用compress壓縮
tar -xzf all.tar.z //
將上面打的包解開
上面這個解包命令將會將文件解開在當前目錄下面。當然,你也可以用這個命令來捏住解包的路徑:
tar -zxvf archive_name.tar.gz -c /tmp/extract_here/
tar -cjf all.tar.bz2 *.jpg //將所有.jpg檔案打包成tar包,並且使用bzip2壓縮
tar -xjf all.tar.bz2 //將上面打的包解壓
上面這個解包命令將會將文件解開在當前目錄下面。當然,你也可以用這個命令來捏住解包的路徑:
tar -jxvf archive_name.tar.bz2 -c /tmp/extract_here/
檔案解壓縮
tar 解包 tar xvf filename.tar 打包 tar cvf filename.tar dirname 注 tar是打包,不是壓縮!gz解壓1 gunzip filename.gz 解壓2 gzip d filename.gz 壓縮 gzip filename tar.gz 解壓 t...
檔案壓縮與解壓縮
類 zipfile 構造方法 zipfile file file 開啟供閱讀的zip檔案,由指定的file物件給出。zipfile file file,int mode 開啟新的zipfile以使用指定模式從指定file物件讀取 zipfile string name 開啟zip檔案進行閱讀 方法摘...
Linux 檔案壓縮解壓縮
tar格式 解包1 tar xvf filename.tar 解包2 tar xvf filename.tar c dirname tar解壓縮到指定目錄 打包 tar cvf filename.tar dirname tar是打包,不是壓縮!gz格式 解壓1 gunzip filename.gz ...