Linux下解壓縮檔案 及tar命令的使用學習

2021-08-09 15:19:04 字數 4861 閱讀 9613

一、linux下和windows下的壓縮檔案的幾個說明

在windows下最常見的壓縮檔案就只有兩種,一是zip,另乙個是.rap。可是linux就不同了,它有.gz、.tar.gz、tgz、 bz2、.z、.tar等眾多的壓縮檔案名,此外windows下的.zip和.rar也可以在linux下使用,不過在linux使用.zip 和.rar的人就太少了。本文就來對這些常見的壓縮檔案進行一番小結,希望你下次遇到這些檔案時不至於被搞暈。

在具體總結各類壓縮檔案之前呢,首先要弄清兩個概念:打包和壓縮。打包是指將一大堆檔案或目錄什麼的變成乙個總的檔案,壓縮則是將乙個大的檔案通過一些壓縮演算法變成乙個小檔案。為什麼要區分這兩個概念呢?其實這源於linux中的很多壓縮程式只能針對乙個檔案進行壓縮,這樣當你想要壓縮一大堆檔案時,你就得先借助另它的工具將這一大堆檔案先打成乙個包,然後再就原來的壓縮程式進行壓縮。

二、linux下的壓縮檔案剖析

1、tar命令

linux下最常用的打包程式就是tar了,tar包檔案的命令通常都是以.tar結尾的。tar可以為檔案和目錄建立檔案。利用tar,使用者可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中改變檔案,或者向檔案中加入新的檔案。 tar最初被用來在磁帶上建立檔案,現在,使用者可以在任何裝置上建立檔案,如軟盤。利用tar命令,可以把一大堆的檔案和目錄全部打包成乙個檔案,這對於備份檔案或將幾個檔案組合成為乙個檔案以便於網路傳輸是非常有用的。linux上的tar是gnu版本的。所以首先就來講講tar命令的基本用法:

語法:tar [主選項+輔選項] 檔案或者目錄

使用該命令時,主選項是必須要有的,它告訴tar要做什麼事情,輔選項是輔助使用的,可以選用。

主選項:

c 建立新的檔案檔案。如果使用者想備份乙個目錄或是一些檔案,就要選擇這個選項。

r 把要存檔的檔案追加到檔案檔案的未尾。例如使用者已經作好備份檔案,又發現還有乙個目錄或是一些檔案忘記備份了,這時可以使用該選項,將忘記的目錄或檔案追加到備份檔案中。

t 列出檔案檔案的內容,檢視已經備份了哪些檔案。

u 更新檔案。就是說,用新增的檔案取代原備份檔案,如果在備份檔案中找不到要更新的檔案,則把它追加到備份檔案的最後。

x 從檔案檔案中釋放檔案。

輔助選項:

b 該選項是為磁帶機設定的。其後跟一數字,用來說明區塊的大小,系統預設值為20(20*512 bytes)。

f 使用檔案檔案或裝置,這個選項通常是必選的。

k 儲存已經存在的檔案。例如我們把某個檔案還原,在還原的過程中,遇到相同的檔案,不會進行覆蓋。

m 在還原檔案時,把所有檔案的修改時間設定為現在。

m 建立多卷的檔案檔案,以便在幾個磁碟中存放。

v 詳細報告tar處理的檔案資訊。如無此選項,tar不報告檔案資訊。

w 每一步都要求確認。

tar命令的選項有很多(用man tar可以檢視到),但常用的就那麼幾個選項,下面來舉例說明一下:

例1:把/home目錄下包括它的子目錄全部做備份檔案,備份檔案名為usr.tar。

$ tar cvf usr.tar /home

例2:把/home目錄下包括它的子目錄全部做備份檔案,並進行壓縮,備份檔案名為usr.tar.gz 。

$ tar czvf usr.tar.gz /home

例3:把usr.tar.gz這個備份檔案還原並解壓縮。

$ tar xzvf usr.tar.gz

例4:檢視usr.tar備份檔案的內容,並以分屏方式顯示顯示器上。

$ tar tvf usr.tar | more

要將檔案備份到乙個特定的裝置,只需把裝置名作為備份檔案名。

例5:使用者在/dev/fd0裝置的軟盤中建立乙個備份檔案,並將/home 目錄中所有的檔案都拷貝到備份檔案中。

$ tar cf /dev/fd0 /home

要恢復裝置磁碟中的檔案,可使用xf選項:

$ tar xf /dev/fd0

如果使用者備份的檔案大小超過裝置可用的存貯空間,如軟盤,您可以建立乙個多卷的tar備份檔案。m選項指示tar命令提示您使用乙個新的存貯裝置,當使用m選項向乙個軟碟機進行存檔時,tar命令在一張軟盤已滿的時候會提醒您再放入一張新的軟盤。這樣您就可以把tar檔案存入幾張磁碟中。

$ tar cmf /dev/fd0 /home

要恢復幾張盤中的檔案,只要將第一張放入軟碟機,然後輸入有x和m選項的tar命令。在必要時您會被提醒放入另外一張軟盤。

$ tar xmf /dev/fd0

例6 # tar -cf all.tar *.jpg

這條命令是將所有.jpg的檔案打成乙個名為all.tar的包。-c是表示產生新的包,-f指定包的檔名。

例7 # tar -rf all.tar *.gif

這條命令是將所有.gif的檔案增加到all.tar的包裡面去。-r是表示增加檔案的意思。

例8 # tar -uf all.tar logo.gif

這條命令是更新原來tar包all.tar中logo.gif檔案,-u是表示更新檔案的意思。

例9 # tar -tf all.tar

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

例10 # tar -xf all.tar

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

以上就是tar的最基本的用法。為了方便使用者在打包解包的同時可以壓縮或解壓檔案,tar提供了一種特殊的功能。這就是tar可以在打包或解包的同時呼叫其它的壓縮程式,比如呼叫gzip、bzip2等。

2、tar呼叫gzip

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

這條命令是將所有.jpg的檔案打成乙個tar包,並且將其用gzip壓縮,生成乙個gzip壓縮過的包,包名為all.tar.gz

# tar -xzf all.tar.gz

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

2、gzip命令

減少檔案大小有兩個明顯的好處,一是可以減少儲存空間,二是通過網路傳輸檔案時,可以減少傳輸的時間。gzip是在linux系統中經常使用的乙個對檔案進行壓縮和解壓縮的命令,既方便又好用。

語法:gzip [選項] 壓縮(解壓縮)的檔名

各選項的含義:

-c 將輸出寫到標準輸出上,並保留原有檔案。

-d 將壓縮檔案解壓。

-l 對每個壓縮檔案,顯示下列字段:

壓縮檔案的大小

未壓縮檔案的大小

壓縮比未壓縮檔案的名字

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

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

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

-num 用指定的數字num調整壓縮的速度,-1或--fast表示最快壓縮方法

下面舉例說明compress命令的用法:

#compress file

上面**表明將生成壓縮檔案file.z代替file,要解壓縮輸入:

#uncompress file.z

注意,像使用gzip命令一樣,使用uncompress命令時必須給出乙個帶有.z副檔名的檔名,否則uncompress命令顯示出錯資訊。

三、tar呼叫

1、tar呼叫bzip2

bzip2是乙個壓縮能力更強的壓縮程式,.bz2結尾的檔案就是bzip2壓縮的結果。與bzip2相對的解壓程式是bunzip2。tar中使用-j這個引數來呼叫gzip。下面來舉例說明一下:

這條命令是將所有.jpg的檔案打成乙個tar包,並且將其用bzip2壓縮,生成乙個bzip2壓縮過的包,包名為all.tar.bz2

# tar -xjf all.tar.bz2

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

2、tar呼叫compress

compress也是乙個壓縮程式,但是好象使用compress的人不如gzip和bzip2的人多。.z結尾的檔案就是bzip2壓縮的結果。與 compress相對的解壓程式是uncompress。tar中使用-z這個引數來呼叫gzip。下面來舉例說明一下:

這條命令是將所有.jpg的檔案打成乙個tar包,並且將其用compress壓縮,生成乙個uncompress壓縮過的包,包名為all.tar.z

# tar -xzf all.tar.z

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

四、小小總結

有了上面的知識,你應該可以解開多種壓縮檔案了,下面對於tar系列的壓縮檔案作乙個小結:

.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 和 .tgz

解壓:tar zxvf filename.tar.gz

壓縮:tar zcvf filename.tar.gz dirname

---------------------------------------------

.bz2

解壓1:bzip2 -d filename.bz2

解壓2:bunzip2 filename.bz2

壓縮: bzip2 -z filename

.tar.bz2

解壓:tar jxvf filename.tar.bz2

壓縮:tar jc

from:

linux解壓縮檔案

gz 解壓1 gunzip filename.gz 解壓2 gzip d filename.gz 壓縮 gzip filename tar.gz 解壓 tar zxvf filename.tar.gz 壓縮 tar zcvf filename.tar.gz dirname bz2 解壓1 bzip2...

解壓縮檔案

public static fastzip fz new fastzip 壓縮檔案 壓縮檔案的路徑與名稱 被壓縮的檔案路徑 解壓密碼 null代表無密碼 public static string filetozip string zipfilepath,string filepath,string ...

解壓縮檔案

using system using system.collections.generic using system.linq using system.text using system.threading.tasks using system.io namespace commonhelper ...