天天看點

Linux下rar tar bz gz等指令壓縮和解壓詳解

如果是以tarball形式安裝安裝,去rar 網站下載下傳相應版本的tarball。位址為 http://www.rarlab.com/

以3.8版本為例,如果是i386的平台,執行以下指令:

$wget http://www.rarlab.com/rar /rarlinux-3.8.0.tar.gz

rar 軟體不需要安裝,直接解壓到/usr/local下,以下操作需要有root 權限。

#tar zxvf rarlinux-3.8.0.tar.gz -C /usr/local

此時,/usr/local/rar 下就會有rar 指令和unrar指令。可以在/usr/local/bin下建立連接配接

#ln -s /usr/local/rar /rar /usr/local/bin/rar

#ln -s /usr/local/rar /unrar /usr/local/bin/unrar

如果是debian或者unbuntu,可以使用如下指令進行自動安裝。

$sudo apt-get install rar

$sudo apt-get install unrar

注意:rar 的<命 令>部分不帶"-"号,隻有<選項>部分帶"-"号,這一點注意一下。

例1:添加檔案或目錄到壓縮檔案中,使用a指令。例如把檔案files1添加到abc.rar 中, 使用a或m指令,a指令把file1檔案添加到abc.rar 檔案中保持原有的file1文 件不變,m指令移動file1檔案到file1.rar 檔案中(壓縮完成後會删除原有的 file1檔案,注意:m指令隻針對檔案進行操作)

$rar a abc.rar file1

說明:如果此時abc.rar 檔案不存在,會自行建立abc.rar 文檔案,如果abc.rar 檔案已經 存在,則将file1檔案壓縮進abc.rar 檔案中,若abc.rar 檔案中已存在一個file1檔案,則會更新file1檔案。并且原有的file1檔案依然存在于當 前目錄下,若要将file1檔案移動到file1.rar 中請使用m指令,對于目錄同樣可以 進行此操作。

注意:如果隻輸入"rar a file1.rar "指令,而沒有接檔案名或目錄名的話,會将目前目錄下所有的檔案和檔案夾壓縮進file1.rar 文檔中。這點要注意一下。

例2:解壓縮abc.rar 檔案中的内容,可以使用e或x指令,假設abc.rar 目錄中有一個名為file1的檔案和一個名為test的目錄,test目錄中有一個名為 file2的檔案,

$rar e abc.rar

說明:使用e指令,會将abc.rar 中的file1檔案連同test目錄下的 file2檔案解壓到目前目錄。如果想保持abc.rar 目錄中的目錄結構請使用x指令。

$rar x abc.rar

說明:此時會将file1檔案和test目錄解壓到目前檔案夾。

例3:為整個壓縮檔案添加注釋

$rar c abc.rar

說明:輸入該指令後,螢幕最下方會顯示

Processing archive test.

rarReading comment from stdin

并有一個光标在閃爍,從光标閃爍的位置輸入注釋資訊,輸入完了按下Ctrl+D結束輸入

例4:為壓縮檔案中的單個檔案添加注釋,使用cf指令。假如現在要為abc.rar 檔 案中的file1檔案添加注釋

$rar ch abc.rar file1

此時螢幕最下方會顯示

Reading comment for abc.rar : file1 from stdin

從光标閃爍出輸入想要為file1添加的注釋,Ctrl+D結束輸入

例4:把整個檔案的注釋寫入到一個檔案中,使用cw指令。加入要将abc.rar 的 注釋寫入到test.txt檔案中

$rar cw abc.rar test.txt

說明:如果目前目錄下不存在名為test.txt的檔案,則會自行建立一個名為test.txt的檔案,并将abc.rar 的注釋寫入到text.txt檔案中,如果目前目錄中已經存在一個名為text.txt的檔案,則 會提示你是否覆寫已經存在的檔案,如果選擇Yes或者All,則會清空test.txt中原有的内容,然後将abc.rar 的注釋内容寫入到text.txt檔案中。

例4:删除壓縮檔案中的檔案或目錄,使用d指令。例如要删除abc.rar 檔案中的 file1檔案。

$rar d abc.rar file1

說明:該指令删除abc.rar 檔案中的file1檔案,對于目錄同樣有效。

以上為常用的壓縮與解壓縮指令,<選項>部分的使用不再進行介紹了,請大家自己嘗試一下吧。

解壓縮指令unrar的使用:

$unrar --help

用法:     unrar <command> -<switch 1> -<switch N> <archive> <files...>

               <@listfiles...> <path_to_extract/>

<指令>

  e             解壓檔案到目前目錄

  l[t,b]        列出壓縮文檔資訊[technical, bare]

  p             列印檔案到标準輸出

  t             測試壓縮我俄當

  v[t,b]        列出壓縮文檔的詳細資訊[technical,bare]

  x             解壓檔案到完整路徑

以下為<選項>部分,略去。

unrar的指令和rar 具有同樣的效果,可以看出unrar隻包含了rar 的一部分指令而已,是以使用rar 就 可以完成所有操作。

tar-----------------------------------------------------------------------------------------------------

.tar.gz

解壓:tar zxvf FileName.tar.gz

壓縮:tar zcvf FileName.tar.gz DirName

大緻總結了一下linux 下各種格式的壓縮包的壓縮、解壓方法。但是部分方法我沒有 用到,也就不全,希望大家幫我補充,我将随時修改完善,謝謝!

.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 jcvf FileName.tar.bz2 DirName

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

.bz

解壓1:bzip2 -d FileName.bz

解壓2:bunzip2 FileName.bz

壓縮:未知

.tar.bz

解壓:tar jxvf FileName.tar.bz

壓縮:未知

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

.Z

解壓:uncompress FileName.Z

壓縮:compress FileName

.tar.Z

解壓:tar Zxvf FileName.tar.Z

壓縮:tar Zcvf FileName.tar.Z DirName

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

.zip

解壓:unzip FileName.zip

壓縮:zip FileName.zip DirName

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

.rar

解壓:rar x FileName.rar

壓縮:rar a FileName.rar DirName

rar 請到:http://www.rarsoft.com /download.htm 下載下傳!

解壓後請将rar_static拷貝到/usr/bin目錄(其他由$PATH環境變量指定的目錄也可以):

[[email protected] tmp]# cp rar_static /usr/bin/rar

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

.lha

解壓:lha -e FileName.lha

壓縮:lha -a FileName.lha FileName

lha請到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下載下傳!

>解壓後請将lha拷貝到/usr/bin目錄(其他由$PATH環境變量指定的目錄也可以):

[[email protected] tmp]# cp lha /usr/bin/

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

.rpm

解包:rpm2cpio FileName.rpm | cpio -div

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

.deb

解包:ar p FileName.deb data.tar.gz | tar zxf -

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

.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm

.deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx

.zoo .cab .kar .cpt .pit .sit .sea

解壓:sEx x FileName.*

壓縮:sEx a FileName.* FileName

sEx隻是調用相關程式,本身并無壓縮、解壓功能,請注意!

sEx請到: http://sourceforge.net/projects/sex下載下傳!

解壓後請将sEx拷貝到/usr/bin目錄(其他由$PATH環境變量指定的目錄也可以):

[[email protected] tmp]# cp sEx /usr/bin/

參考文獻:Linux 檔案壓縮工具指南

(其實看幫助是最好的方法,一般各個指令都可以用“--help”參數得到常用使用方法!)

使用者經常需要備份計算機系統中的資料,為了節省存儲空間,常常将備份檔案進行壓縮。下面分别介紹備份與壓縮的指令。

tar指令 ------------------------------------------------------------

tar可以為檔案和目錄建立檔案。利用tar,使用者可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中改變檔案,或者向檔案中加入新的文 件。 tar最初被用來在錄音帶上建立檔案,現在,使用者可以在任何裝置上建立檔案,如軟碟。利用tar指令,可以把一大堆的檔案和目錄全部打包成一個檔案,這對于 備份檔案或将幾個檔案組合成為一個檔案以便于網絡傳輸是非常有用的。Linux 上的tar 是GNU版本的。

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

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

主選項:

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

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

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

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

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

輔助選項:

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

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

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

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

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

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

w 每一步都要求确認。

z 用gzip來壓縮/解壓縮檔案,加上該選項後可以将檔案檔案進行壓縮,但還原時也一定要使用該選項進行解壓縮。

例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

gzip指令 ------------------------------------------------------------------------------------------------

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

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

各選項的含義:

-c 将輸出寫到标準輸出上,并保留原有檔案。

-d 将壓縮檔案解壓。

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

壓縮檔案的大小

未壓縮檔案的大小

壓縮比

未壓縮檔案的名字

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

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

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

-num 用指定的數字num調整壓縮的速度,-1或--fast表示最快壓縮方法(低壓縮比),-9或--best表示最慢壓縮方法(高壓縮比)。系統預設值為 6。

假設一個目錄/home下有檔案mm.txt、sort.txt、xx.com。

例1:把/home目錄下的每個檔案壓縮成.gz檔案。

$ cd /home

$ gzip *

$ ls

m.txt.gz sort.txt.gz xx.com.gz

例2:把例1中每個壓縮的檔案解壓,并列出詳細的資訊。

$ gzip -dv *

mm.txt.gz 43.1%-----replaced with mm.txt

sort.txt.gz 43.1%-----replaced with sort.txt

xx.com.gz 43.1%-----replaced with xx.com

$ ls

mm.txt sort.txt xx.com

例3:詳細顯示例1中每個壓縮的檔案的資訊,并不解壓。

$ gzip -l *

compressed uncompr. ratio uncompressed_name

277 445 43.1% mm.txt

278 445 43.1% sort.txt

277 445 43.1% xx.com

$ ls

mm.txt.gz sort.txt.gz xx.com.gz

例4:壓縮一個tar備份檔案,如usr.tar,此時壓縮檔案的擴充名為.tar.gz

$ gzip usr.tar

$ ls

usr.tar.gz

unzip指令

用MS Windows下的壓縮軟體winzip壓縮的檔案如何在Linux 系統下 展開呢?可以用unzip指令,該指令用于解擴充名為.zip的壓縮檔案。

文法:unzip [選項] 壓縮檔案名.zip

各選項的含義分别為:

-x 檔案清單 解壓縮檔案,但不包括指定的file檔案。

-v 檢視壓縮檔案目錄,但不解壓。

-t 測試檔案有無損壞,但不解壓。

-d 目錄 把壓縮檔案解到指定目錄下。

-z 隻顯示壓縮檔案的注解。

-n 不覆寫已經存在的檔案。

-o 覆寫已存在的檔案且不要求使用者确認。

-j 不重建文檔的目錄結構,把所有檔案解壓到同一目錄下。

例1:将壓縮檔案text.zip在目前目錄下解壓縮。

$ unzip text.zip

例2:将壓縮檔案text.zip在指定目錄/tmp下解壓縮,如果已有相同的檔案存在,要求unzip指令不覆寫原先的檔案。

$ unzip -n text.zip -d /tmp

例3:檢視壓縮檔案目錄,但不解壓。

$ unzip -v text.zip

zgrep指令 ---------------------------------------------------------------------------------------------------

這個指令的功能是在壓縮檔案中尋找比對的正規表達式,用法和grep指令一樣,隻不過操作的對象是壓縮檔案。如果使用者想看看在某個壓縮檔案中有沒 有某一句話,便可用zgrep指令。

繼續閱讀