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

jopen 10年前發布 | 16K 次閱讀 Linux

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

1.compress與*.Z文件

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

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

如果沒有安裝compress,輸入compress命令后會提示錯誤:

-bash: compress: command not found

運行下面的命令可以進行安裝:

yum install ncompress

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

將文件test壓縮到test.Z

compress test

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

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.bz2、*.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

來自:http://my.oschina.net/Tsybius2014/blog/348690

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!