gzip,bzip2,tar,zip命令詳解

2021-05-21 21:53:33 字數 3450 閱讀 9123

1 gzip

gzip(1) 是gnu的壓縮程式。它只對單個檔案進行壓縮。基本用法如下:

$ gzip filename

程式執行以後,檔名會變成filename.gz,而且一般情況下大小會比原檔案要小。注意,程式並不新建乙個新的檔案filename.gz, 而是將filename變成filename.gz。一般來說,文字檔案壓縮率會比較高。而那些jpeg影象,***等類似檔案的壓縮率就沒有那麼好了,因為它們本來就已經被壓縮過了的。這個基本用法考慮了壓縮時間和壓縮後檔案尺寸的平衡問題(注:如果要使壓縮後的檔案更小,就需要用到更多的時間)。要得到最小檔案大小(最大壓縮),可以使用如下用法:

$ gzip -9 filename

這樣就可以得到gzip能夠壓縮的最小檔案尺寸,但是需要更長的壓縮時間。上面的數字越小,壓縮就越快,相反壓縮率也就越小。

將gzip壓縮的檔案解壓縮,有兩個命令可以使用,但實際上它們是同乙個程式。只要壓縮檔案的字尾名被gzip程式認到,它就可以解壓縮。字尾名可以是:.gz, -gz, .z, -z, .z 和 –z。可以使用的第乙個命令是:

$ gunzip filename.gz

使用上面的命令後,filename.gz會被解壓縮並去掉字尾名.gz變成filename。gunzip 實際上是gzip程式的一部分,它跟gzip –d 這個命令有等同效果。但是我們使用的時候,經常使用gunzip, 因為這個用法似乎更酷些。

bzip2的使用方法和gzip是一樣的,所以我們不再花時間討論了。像gunzip一樣,bunzip2的效果等同於bzip2 –d。與gzip最大的不同是bzip2使用字尾名.bz2.

$ bzip2 filename

$ bunzip2 filename.bz2

$ gunzip -9 filename

3 tar

tar是乙個gnu的磁帶歸檔程式。它可以將幾個檔案或者目錄打包壓縮成乙個檔案。這個特點讓我們可以壓縮整個目錄樹,而單使用gzip和 bzip2是無法做到的。tar有很多命令列引數,你可以在手冊頁找到它們。在這一節裡,我們只是討論一下那些經常用到的tar的用法。

我們可以將上述格式的檔案用tar加一些命令列引數進行解包。-z引數表示在首先執行gunzip將檔案解壓縮。將乙個tarball解包的最常用的用法是:

$ tar -xvzf filename.tar.gz

這裡有不少的引數,那麼它們各自有什麼意思呢?

-x表示提取檔案。這是乙個非常重要的引數,因為它告訴tar對輸入的檔案具體怎麼處理。在這裡,我們要將打包的檔案分離還原成打包前的狀態。

-v表示詳述。加入這個引數讓程式將解包出來的每乙個檔案列出來。如果覺得列出來太煩了,你完全可以把這個引數去掉來關閉這個功能。相反,如果你需要每個解包檔案更詳細的資訊,則可以使用-vv引數。

-z是告訴tar先執行gunzip將檔案解壓縮。

-f是告訴tar在命令列輸入的下乙個串字元是需要處理的檔案。

上面這個命令也可以用一些其他形式的寫法。在比較老的系統裡面由於缺少新版本的gnu tar程式,你可能會看到它是寫成這樣的:

$ gunzip filename.tar.gz | tar -xvf -

這行命令先把檔案解壓縮,然後把解壓的檔案對輸出到tar程式。gzip可以把其處理完的資料輸到標準輸出。這裡就是把gzip解壓縮的檔案作為標準輸出,然後由管道把檔案送到tar程式進行解包。最後的 "-"表示處理標準輸入。它將解包後的檔案寫入磁碟。

還有一種寫法是將第一種命令格式的短劃線去掉,像這樣:

$ tar xvzf filename.tar.gz

你也可能會碰到bzip2壓縮的打包檔案。在slackware linux所帶的tar程式版本可以像gzip壓縮的打包檔案一樣,只是要把引數-z用-j代替:

$ tar -xvjf filename.tar.bz2

這裡需要注意的是,tar會把解包的檔案放到當前目錄。所以如果要把乙個放在/tmp目錄檔案解壓縮到你的家目錄的話,這裡有一些做法可供選擇:

選擇一,把檔案拷貝到家目錄,然後解包

選擇二,指定需要解包檔案的路徑

選擇三,用-c 引數指定解包後存放檔案的路徑

$ cd $home

$ cp /tmp/filename.tar.gz

$ tar -xvzf filename.tar.gz

$ cd $home

$ tar -xvzf /tmp/finename.tar.gz

$ cd /

$ tar -xvzf /tmp/filename.tar.gz -c $home

上面所有的命令都是等效的。每一種做法都是把檔案解包到你的家目錄,原始檔則留在原來的地方。

上面講了那麼多用tar解包的命令,現在讓我們來看看tar是如何來打包的吧。

在大多數情況下,只需要用引數"-c"代替引數"-x"就可以了:

$ tar -cvzf filename.tar.gz .

在這行命令裡面,引數-c是告訴tar來建立乙個打包檔案;而引數-z是將打包的檔案通過gzip程式進行壓縮。filename.tar.gz 是你將要建立的檔名。(譯者新增:命令列最後的"."是告訴tar將當前目錄下的所有檔案/資料夾打包)

引數"-f"不是必需的,但是通常來說加上會是乙個好主意。如果不加,tar會將資料寫到標準輸出,這就需要管道將tar輸出到另外乙個程式,像這樣:

$ tar -cv filename.tar . | gpg --encrypt

這行命令把當前目錄下的所有檔案打包建立乙個沒有被壓縮的tar歸檔檔案,通過管道輸出到gpg程式進行加密,讓不知道金鑰的人無法讀到檔案內容。

4 zip

最後,討論一下處理zip檔案的兩個程式。zip檔案在windows世界裡面是極為常用的,所以linux也有相應的程式來處理它們。zip檔案的壓縮程式叫做zip,解壓縮程式叫做unzip.

$ zip foo *

這行命令會建立乙個包涵當前目錄所有檔案的的zip檔案 foo.zip。zip會自動將

.zip字尾名加上,所以我們不需要在命令中加上。你也可以加上乙個引數-r使zip將當前目錄下的所有資料夾目錄也加在zip檔案中:

$ zip -r foo *

解壓縮檔案很簡單,像這樣:

$ unzip foo.zip

這樣會解壓縮foo.zip裡面的所有檔案和資料夾

以.cpio/cpio為副檔名的檔案:

#cpio -div file.cpio

或cpio -divc file.cpio

以.rpm為副檔名的檔案安裝:

#rpm -i file.rpm

以.rpm為副檔名的檔案解壓縮:

#rpm2cpio file.rpm | cpio -div

以.deb為副檔名的檔案安裝:

#dpkg -i file.deb

以.deb為副檔名的檔案解壓縮:

#dpkg-deb --fsys-tarfile file.deb | tar xvf - ar p

file.deb data.tar.gz | tar xvzf -

壓縮及打包 gzip,bzip2,tar

一.常見的壓縮檔案 1.z compress程式壓縮的檔案 2.gz gzip程式壓縮的檔案 3.bz2 bzip2程式壓縮的檔案 4.tar tar程式打包的資料,沒有經過壓縮 5.tar.gz tgz tar程式打包的檔案,其中經過gzip程式壓縮 6.tar.bz2 tar程式打包的檔案,其中...

壓縮工具gzip bzip2 xz

使用壓縮工具的好處 使用壓縮檔案,不僅可以節省磁碟空間,而且在傳輸時還能節省網路寬頻。我們通常講的家用寬頻和機房寬頻100m是有區別的 機房寬頻的上行和下行都是100m,所以 昂貴,家用寬頻下行是100m,但是上行往往只有10m 20m 格式 gzip 引數 filename d是解壓縮。例子 查詢...

壓縮打包介紹 gzip bzip2與xz壓縮工具

一 壓縮打包介紹 壓縮的好處不僅能節省磁碟空間而且在傳輸的時候還可以節省網路頻寬 在windows和linux下都能使用的是.zip格式的檔案 主要有以下幾種工具 gz gzip 壓縮工具壓縮的檔案 bz2 bzip2 壓縮工具壓縮的檔案 tar tar 打包程式打包的檔案 tar並沒有壓縮功能,只...