對Linux上的各種型壓縮格式的一個總結

我使用的環境是64位的 Red Hat Enterprise Linux Server release 6.4 (Santiago)linux

1.compress與*.Z文件算法

compress程序的做用是:Compress reduces the size of the named files using adaptive Lempel-Ziv codingbash

即:使用自適應的Lempel-Ziv編碼壓縮文件編碼

若是沒有安裝compress,輸入compress命令後會提示錯誤:.net

-bash: compress: command not foundcode

運行下面的命令能夠進行安裝:htm

yum install ncompress

(Arch: x86_64;Version: 4.2.4-54.el6_2.1)排序

將文件test壓縮到test.Z遞歸

compress test

運行該命令後,test文件消失,新出現文件test.Z。解壓縮此文件,則輸入下面兩個命令之一就能夠了ip

compress -d test.Z
uncompress test.Z

compress命令沒法對整目錄進行壓縮,只能壓縮一個目錄中的全部文件進行遞歸式壓縮與解壓縮

compress -r testdir
uncompress -r testdir

2.gzip與*.gz文件

在man中對gzip的描述是:gzip reduces the size of the named files using Lempel-Ziv coding(LZ77)

亦即便用Lempel-Zip編碼(LZ77)對文件進行壓縮

將文件test壓縮爲test.7gz,輸入下面這個命令

gzip test

查看壓縮後的文件內容,能夠用zcat直接查看,如:

echo "abcd" > word
gzip word
zcat word

能夠看到輸出「abcd」

gunzip用於解壓縮gz文件,解壓縮以前的test.gz,可使用以下命令:

gunzip test.gz

對目錄中的文件遞歸式壓縮和解壓縮,須要添加參數 -r

gzip -r test
gunzip -r test.gz

3.bzip2與*.bz2文件

man中對bzip2的說明是:bzip2 compresses files using the Burrows-Wheeler block sorting text compression algorithm, and Huffman coding

即便用Burrows-Wheeler塊排序文本壓縮算法和Huffman編碼實現壓縮文件

經過bzip2壓縮文件的命令(二選一便可)

bzip2 test
bzip2 -z test

經過bzip2解壓縮文件的命令(二選一便可)

bunzip2 test.bz2
bzip2 -d test.bz2

查看壓縮後的文件,使用命令bzcat便可,用法與zcat相似,即「bzcat 文件名」

4.tar與*.tar、*.tar.gz、*tar.bz二、*.tar.xz文件

tar命令能夠用於壓縮目錄,若有目錄testdir,將其壓縮到testdir.tar

tar -cvf testdir.tar testdir

-c:創建一個壓縮檔案

-v:壓縮過程當中顯示檔案

-f:使用檔名(f必須做爲最後一個參數,後面直接跟*.tar)

壓縮後,原來的test不消失。若是要解壓testdir.tar,輸入命令:

tar -xvf testdir.tar

根據tar命令的參數,能夠將目錄testdir分別壓縮成tar.gz格式、tar.bz2格式和tar.xz格式

1)tar.gz格式的壓縮與解壓縮(-z filter the achive through gzip)

tar -zcvf testdir.tar.gz testdir
tar -zxvf testdir.tar.gz

2)tar.bz2格式的壓縮與解壓縮(-j filter the archive through bzip2)

tar -jcvf testdir.tar.bz2 testdir
tar -jxvf testdir.tar.bz2

3)tar.xz格式的壓縮與解壓縮(-J filter the archive through xz)

tar -Jcvf testdir.tar.xz testdir
tar -Jxvf testdir.tar.xz

5.zip與*.zip文件

將目錄testdir壓縮到文件testdir.zip中,可用以下命令實現:

zip -r testdir.zip testdir

查看解壓後zip文件中的內容:

unzip -v testdir.zip

將testdir.zip解壓到當前目錄(下面兩個命令選一個運行便可)

unzip -o testdir.zip
unzip -o -d . testdir.zip

-o意爲若是以前有重名文件,則覆蓋它:overwrite existing files without prompting (dangerous option)

-d是壓縮到的目錄:an optional directory to which to extract files

現假設有一個文件word。向testdir.zip中添加文件word,能夠用命令:(運行完畢後原來的word會消失)

zip -m testdir.zip word

從testdir.zip中刪除文件word,能夠用命令:(word被刪除後就不存在了)

zip -d testdir.zip word

6.rar與*.rar

rar程序須要手動安裝後才能使用

我從這個地址上下載了一個:http://www.rarlab.com/download.htm

下載的是:RAR 5.20 beta 4 for Linux x64

下載下來的文件名爲:rarlinux-x64-5.2.b4.tar.gz;大小1.08MB

保存到本身的Linux系統後,解壓縮這個文件

tar rarlinux-x64-5.2.b4.tar.gz

能夠看到文件夾rar,進入後輸入命令

make -f makefile

能夠看到makefile調用了以下幾個命令

mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib

安裝完畢!這個時候直接輸入rar就能夠查看rar的各個參數及意義了

將testdir壓縮到testdir.rar,使用命令:

rar a testdir.rar testdir

將testdir.rar解壓縮到當前目錄,使用命令(二選一):

rar x testdir.rar
unrar e testdir.rar

7.7za和*.7z文件

7za也須要下載後手動安裝

下載地址:http://sourceforge.net/projects/p7zip/files/p7zip/9.20.1/

下載文件:p7zip_9.20.1_x86_linux_bin.tar.bz2

下載到本地的Linux系統後,解壓縮:

tar xjf p7zip_9.20.1_x86_linux_bin.tar.bz2

解壓後能夠看到目錄 p7zip_9.20.1。用root權限調用裏面的 install.sh 腳本

安裝完畢!這個時候直接輸入7za或命令「man 7za」就能夠查看7za的各個參數及意義了

將目錄testdir壓縮到testdir.7z:

7za a -t7z testdir.7z testdir

各部分意義

1)a 添加文件

2)-t 壓縮類型 這裏選了7z(這個也是默認值)

3)testdir.7z 壓縮後的文件名

4)testdir 被壓縮的文件(能夠是一個或多個的文件、目錄)

將testdir.7z中的內容解壓縮到當前文件夾:

7za x testdir.7z -r -o./

1)-r 遞歸解壓縮全部子文件夾

2)-o 解壓到指定目錄(後面直接跟路徑,沒有空格)

8.一個用於解壓縮文件的腳本

若是你以爲Linux中各類各樣的壓縮文件解壓命令都不同很麻煩,下面這個傻瓜腳本應該會有所幫助:

腳本:extract.sh

#!/bin/sh

if [ "$#" -ne 1 ]; then
    echo "輸入參數:被解壓縮文件"
    exit 0
fi

if [ -f "$1" ]; then
    case "$1" in
        *.tar ) tar xf $1 ;;
        *.tar.bz2 | *.tbz2 ) tar xjf $1 ;;
        *.tar.gz | *.tgz ) tar xzf $1 ;;
        *.bz2 ) bunzip2 $1 ;;
        *.gz ) gunzip $1 ;;
        *.zip ) unzip $1 ;;
        *.rar ) unrar e $1 ;;
        *.Z ) uncompress $1 ;;
        *.7z ) 7z x $1 ;;
        * ) echo 類型未識別 ;;    
    esac
else
    echo "$1":文件不存在或無權限
fi

exit 0

END

相關文章
相關標籤/搜索