檔案的壓縮與解壓縮zz--linux

3492zhang發表於2009-07-05

對許多使用者來說,在DOS和Windows環境下利用工具軟體ARJ、Winzip等,壓縮或解壓檔案是比較容易的事。但是,在Linux中如何對檔案進行壓縮與解壓呢?本文基於Red Hat,介紹了壓縮與解壓檔案的幾種方法與技巧,希望對讀者有一定的幫助。

[@more@]

命令: compress格式: compress 選項 檔案列表
功能: 用Lempel-ziv壓縮方法來壓縮檔案或壓縮標準輸入
選項: -r 遞迴操作,如果指定目錄變元,則壓縮該目錄及其子目錄中的所有檔案。

-c 將壓縮資料返回標準輸出,而預設情況下為壓縮檔案時將壓縮資料返回檔案。

-v 顯示每個資料夾的壓縮百分比。

解釋: 在用compress壓縮檔案時,將在原檔名之後加上副檔名.Z。如果不指定檔案,則壓縮標準輸入,其結果返回標準輸出。
例項: 目的:壓縮/mnt/lgx/a1.doc檔案

命令:#compress /mnt/lgx/a1.doc

結果:壓縮後生成a1.doc.Z檔案。


命令: uncompress格式: uncompress 選項 檔案列表
功能: 解壓縮用compress 程式壓縮過的檔案
選項: -c 它將壓縮資料發往標準輸出而不是改寫舊的壓縮檔案
解釋: 如果不指定檔案,則解壓縮標準輸入。預設-c時,為解壓縮。
例項: 目的:解壓縮/mnt/lgx/a1.doc.Z

命令:# uncompress /mnt/lgx/a1.doc.Z

命令: gzip
格式: gzip 選項 檔案目錄列表
功能: 用Lempel-ziv編碼壓縮檔案
選項: -c 壓縮結果寫入標準輸出,原檔案保持不變。預設時gzip將原檔案壓縮為.gz檔案,並刪除原檔案。

-v 輸出處理資訊。

-d 解壓縮指定檔案。

-t 測試壓縮檔案的完整性。

解釋: 值得一提的是,gzip比compress壓縮更加有效。
例項: 目的:壓縮/mnt/lgx/a1.doc

命令:#gzip -v /mnt/lgx/a1.doc

結果:產生a1.doc.gz的壓縮檔案

命令: gunzip
格式: gunzip 選項 檔案列表
功能: 解壓縮用gzip命令(以及compress和zip命令)壓縮過的檔案
選項: -c 將輸出寫入標準輸出,原檔案保持不變。預設時,gunzip將壓縮檔案變成解壓縮檔案。

-l 列出壓縮檔案中的檔案而不解壓縮。

-r 遞迴解壓縮,深入目錄結構中,解壓縮命令列變元所指定目錄中的所有子目錄內的檔案。

例項: 目的:解壓縮/mnt/lgx/a1.doc.gz

命令:#gunzip /mnt/lgx/a1.doc.gz

命令: tar格式: tar 選項 檔案目錄列表
功能: 對檔案目錄進行打包備份
選項: -c 建立新的歸檔檔案

-r 向歸檔檔案末尾追加檔案

-x 從歸檔檔案中解出檔案

-O 將檔案解開到標準輸出

-v 處理過程中輸出相關資訊

-f 對普通檔案操作

-z 呼叫gzip來壓縮歸檔檔案,與-x聯用時呼叫gzip完成解壓縮

-Z 呼叫compress來壓縮歸檔檔案,與-x聯用時呼叫compress完成解壓縮

例項1: 目的:用tar打包一個目錄下的檔案

命令:#tar -cvf /mnt/lgx/a1.doc

結果:產生一個以.tar為副檔名的打包檔案

例項2: 目的:用tar解開打包檔案

命令:#tar -xvf /mnt/lgx/a1.doc.tar

附加說明:在通常情況下,tar打包與gzip(壓縮)經常聯合使用,效果更好。方法是:

首先用tar打包,如:#tar -cvf /mnt/lgx/a1.doc (產生a1.doc.tar檔案)

然後用gzip壓縮a1.doc.tar檔案,如:#gzip /mnt/lgx/a1.doc.tar (產生a1.doc.tar.gz檔案)

例項3: 目的:解壓a1.doc.tar.gz檔案

方法1:

#gzip -dc /mnt/lgx/a1.doc.tar.gz (產生a1.doc.tar檔案)

#tar -xvf /mnt/lgx/a1.doc.tar (產生a1.doc檔案)

這兩次命令也可使用管道功能,把兩個命令合二為一:

#gzip -dc /mnt/lgx/a1.doc.tar.gz | tar -xvf

方法2:使用tar提供的自動呼叫gzip解壓縮功能

#tar -xzvf /mnt/lgx/a1.doc.tar.gz

經過tar打包後,也可用compress命令壓縮(注:gzip比compress壓縮更加有效),產生一個以.tar.Z的檔案,在解包時,可先用 “uncompress 檔名”格式解壓,然後用“tar -xvf 檔名”解包。也可直接呼叫“tar -Zxvf 檔名”解包。

壓縮檔案的 zip 命令
那麼常用的zip命令!如壓縮當前路徑下的aaa目錄和其下的東東並檢驗,可用:
zip -r -T -9 aaa.zip aaa/
zip 可用來壓縮檔案,如果我們有許多檔案需要做壓縮,甚至可以將它們一併處理並壓縮成一個檔案。以下是 zip 的語法以及可用的引數介紹 :

  其實 zip 最常用的方法是在後面加上壓縮後的檔名,以及要壓縮的檔案即可。
  因為 zip 命令在許多 OS 平臺都有,而且引數相當多,在此我只介紹一些 Linux 上適用的引數 :
-1 : 最快壓縮,壓縮率最差。
-9 : 最大壓縮,壓縮率最佳。
-b : 暫存檔案的路徑。這個引數一般在要產生的 zip 檔案存在,而硬碟現有空間不足時。
-c : 替新增或更新的檔案增加一行註解。
-d : 從 zip 檔案移出一個檔案。
-D : 不要在 zip 檔案中儲存檔案的目錄資訊。
-f : 以新檔案取代現有檔案。
-F : 修復已經損毀的壓縮檔案。
-g : 將檔案壓縮附加到 zip 檔案中。
-h : 顯示輔助說明。
-i : 指定要含入的某些特定檔案。
-j : 只儲存檔案的名稱,不含目錄。
-k : 強迫使用 MSDOS 格式檔名。
-l : 將 CR ( Carriage Return ) LF ( Line Feed ) 轉換成 LF,一般是要將 MS-DOS 上的文字檔案壓縮後拿到 UNIX 下使用時才使用此引數。這隻適用於文字檔案 ( .txt ),如果用於二進位制檔案則會造成二進位制檔案損毀。
-L : 顯示 zip 命令的版權。
-m : 將特定檔案移入 zip 檔案中,並且刪除特定檔案。
-n : 不壓縮特定副檔名的檔案。
-o : 將 zip 檔案的時間設成最後修正 zip 檔案的時間。
-q : 安靜模式,不會顯示相關訊息和提示。
-r : 包括子目錄。
-t : 只處理 mmddyy 日期以後的檔案。
-T : 測試 zip 檔案是否正常。
-u : 只更新改變過的檔案和新檔案。
-v : 顯示版本資訊或詳細訊息。
-x : 不需要壓縮的檔案。
-y : 將 symbolic link 壓縮,而不是壓縮所連結到的檔案。
-z : 為 zip 檔案增加註解。
-# : 設定壓縮速度,-0 表示不壓縮,-1 表示最快速度的壓縮,
-9 表示最慢速度的壓縮 ( 最佳化的壓縮 ),預設值為 -6。
-@ : 從標準輸入讀取檔名稱。


rar命令使用說明

rar無疑是當前最各平臺上最優秀的壓縮軟體之一。具有壓縮比大,可設定性強,容錯性好等優點。目前Linux版本的rar為3.20版,可以免費使用,在

下載。

據我所知,目前所有的壓縮軟體中,rar的壓縮率是最高的(winace的壓縮比曾經比rar還高,但是當rar出到3.0以後,這個桂冠就被rar奪去了)。

rar價格便宜量又足,我一直用它。以下是我所熟悉rar的最常用的用法,倘有佯謬之處還請指正。

原始碼:
rar

用法: rar - ....-

通常rar命令由一個主命令加若干選項(可選)構成,操作文件為操作施加的.rar檔案物件,
檔案或檔案列表為對操作文件實現修飾的具體檔案或目錄(可選)。

rar常用命令主要有
a 新增檔案到操作文件
eg. rar a test.rar file1.txt 若test.rar檔案不存在,則打包file1.txt檔案成test.rar
rar a test.rar file2.txt 若test.rar檔案已經存在,則新增file2.txt檔案到test.rar中(這樣
test.rar中就有兩個檔案了)
注,如果操作文件中已有某檔案的一份複製,則a命令更新該檔案
另,對目錄也可以進行操作
eg. rar a test.rar dir1

c 對操作文件新增說明註釋
eg. rar c test.rar
(會出現Reading comment from stdin字樣,然後輸入一行或多行註釋,以ctrl+d結束)

cf 新增檔案註釋,類似上面的c,不過這個是對壓縮文件中每個檔案進行註釋

cw 將文件註釋寫入檔案
eg. rar cw test.rar comment.txt

d 從文件中刪除檔案
eg. rar d test.rar file1.txt

e 將檔案解壓到當前目錄
eg. rar e test.rar
注,用e解壓的話,不僅原來的file1.txt和file2.txt被解壓到當前目錄,就連dir1裡面的所有檔案
也被解壓到當前目錄下,不能保持壓縮前的目錄結構,如果想保持壓縮前的目錄結構,用x解壓

k 鎖定文件
eg. rar k test.rar 鎖定文件後,該文件就無法進行任何更新操作了

r 修復文件
eg. rar r test.rar
當rar檔案有問題時,可以嘗試用該命令進行修復(鬼知道有多少用)

s 轉換文件成自解壓文件
eg. rar s test.rar
會生成一個test.sfx的可執行文件,執行它的效果就相當於rar x test.rar,
適合於向沒有rar的使用者傳輸檔案

t 檢測文件
eg. rar t test.rar
檢測test.rar的完整性,一般壓縮完大型檔案準備傳輸前最好用這個命令來確保檔案的正確性

x 帶路徑解壓文件中內容到當前目錄
eg. rar x test.rar
這樣解壓的話,dir1就會保持原來的目錄結構

以上就是rar的常用命令,一個rar操作只能有一個命令,而選項卻可以有多個。

rar選項有很多,在此無法一一說明,只示範經常使用的幾個

cl 將檔名轉換為小寫
cu 將檔名轉換為大寫
eg. rar a -cl test.rar FILe.txt
FILe.txt在新增進test.rar之後,變為file.txt

df 文件操作後刪除原始檔
eg. rar a -df test.rar file1.txt file2.txt dir1
將file1.txt,file2.txt,dir1壓縮到test.rar中之後,刪除原始檔

ed 不新增空目錄
eg. rar a -ed test.rar dir1
新增dir1到test.rar中時,不對空目錄進行操作
rar e -ed test.rar
解壓test.rar時,不生成空目錄

k 鎖定檔案
eg. rar a -k test.rar file1.txt
等價於rar a test.rar file1.txt
rar k test.rar

m<0..5> 設定壓縮比等級(0-儲存,3-預設,5-最大)
eg. rar a -m0 test.rar dir1 dir2
將dir1,dir2打包儲存到test.rar,不進行實質上的壓縮(速度奇快,適合於對無甚可壓的檔案進行操作
比如avi,jpg等)
rar a -m5 test.rar *.txt *.bmp
將當前目錄下的txt檔案和bmp檔案打包壓縮到test.rar中,使用最大壓縮比(最慢)

ms[ext;ext] 特定檔案採用非壓縮方式
eg. rar a -m5 -ms avi;jpg;jpeg test.rar /home
將home目錄下所有目錄和檔案歸檔到test.rar,採用最大壓縮,但avi,jpg,jpeg檔案不進行壓縮
(只是打包進test.rar,因為這些檔案即使用最大壓縮也壓不了多少,不如直接打包節省時間)

o+ 覆蓋已有檔案
o- 不覆蓋已有檔案
eg. rar x -o- test.rar
解壓test.rar檔案,但是如果碰到以存在的檔案則不覆蓋

ol 將符號連結以連結檔案儲存,而不是普通檔案
ow 儲存或者恢復檔案所有者的資訊(username,group)
這兩個是*nix系統特有的命令,很容易理解吧

p[password] 設定密碼
eg. rar a test.rar *.txt -p prettygirl
壓縮檔案設定密碼為prettygirl,解壓時無密碼無法進行操作
如果覺得明碼密碼太過暴露,可以使用
rar a test.rar *.txt -p
則rar程式會詢問你要使用什麼密碼,不回顯

s- 不使用固實壓縮
注,固實壓縮就是壓縮後文件內容不可變更的壓縮方式,這和lock不一樣。因為使用普通壓縮
要照顧以後的插入刪除個別檔案的需要,就要留下很多操作餘地。而固實壓縮則不可以對
其內容進行任何更新,所以壓縮比是最大的。

sfx[name] 建立自解壓檔案,這和先用a進行壓縮,再用s轉換效果是一樣的。

t 壓縮完畢後進行完整性檢驗
eg. rar a test.rar /home -t
壓縮完畢後進行檢驗,如果有問題則報錯。

ta 僅對data日期後檔案進行操作
tb 僅對data日期前檔案進行操作
注,date的格式為 YYYYMMDDHHMMSS 這樣。

v[k,b] 分卷壓縮,每卷大小由後面的size指定
eg. rar a -v15000k -m0 test xvid-fn.avi
對xvid-fn.avi進行打包儲存,每卷大小15000k(這種格式在網上釋出dvdrip時很流行)
生成的檔名為test.part1.rar,test.part2.rar....(rar 3.20版)

x 排除特定的檔案
eg. rar x test.rar -x *.txt
解壓test.rar中除*.txt以外的文件

y 所有操作均回答yes
例如有時解壓時每碰到相同檔案就問是否覆蓋(Y/N),加上-y就可以預設選擇Yes,不再詢問

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/345618/viewspace-1023785/,如需轉載,請註明出處,否則將追究法律責任。

相關文章