1. 程式人生 > >Linux壓縮那些事兒

Linux壓縮那些事兒

tar簡介

linux_compress_tar
Linux的壓縮命令的原始檔只能有一個,這意味在壓縮之前不得不先將要壓縮的所有檔案打包成一個包,然後再壓縮包,這樣來完成對多個檔案的壓縮。所以在瞭解解壓縮之前就必須先了解打包命令。
Linux的打包一般都是通過tar命令來完成的,用tar來完成不同的動作是通過指定不同的引數來完成的,通常使用的也就是——x/c,這兩個引數,它們的字面含義是 c——create,x——extract,建立和分包提取,另外還有一些常用的引數,比如 a 將tar新增到另外一個tar包的末尾,t 列出包中的檔案,-C 將工作目錄切換到指定的目錄下,指定這個引數就可以將解壓後的檔案放到指定的目錄當中去了。另外有一個重要的引數 f,這個引數可以打包的結果放在一個檔案當中。

tar打包和解包 1.打包檔案

將fiel1,file2,file3打包成file.tar:

tar -cf file.tar file1 file2 file3

-c 打包模式
-f 指定將要建立的打包結果存放檔案

2.解包檔案

現在有一個包file.tar將它解包:

tar -xf file.tar

-x 解包模式
-f 指定tar包檔案

壓縮軟體簡介

GZIP最早由Jean-loup Gailly和Mark Adler建立,用於UNⅨ系統的檔案壓縮。我們在Linux中經常會用到字尾為.gz的檔案,它們就是GZIP格式的。現今已經成為Internet 上使用非常普遍的一種資料壓縮格式,或者說一種檔案格式。
linux_compress_gz


bzip2 是一個基於Burrows-Wheeler 變換的無失真壓縮軟體,壓縮效果比傳統的LZ77/LZ78壓縮演算法來得好。bzip2能夠進行高質量的資料壓縮。它利用先進的壓縮技術,能夠把普通的資料檔案壓縮10%至15%,壓縮的速度和解壓的效率都非常高!支援大多數壓縮格式,包括tar、gzip 等等。
linux_compress_bz2

壓縮的作用毋庸置疑,一旦一件事物變的更為簡單之後,各方面的操作就更為簡單,Linux的壓縮一般有幾種方式,它們是gzip壓縮,bzip2壓縮,xz壓縮。它們的輸入都只有一個,下面講一個例項,分別用這三種壓縮方式來壓縮file.tar,然後壓縮好的壓縮檔案再分別用這三種方式解壓,生成xfile.tar,由於分別對單純的解壓和壓縮並不是本文的重點,所以有些引數就不著重介紹,但需要的時候會簡單的介紹下。

壓縮軟體使用 1.用gzip操作
壓縮:gzip file.tar (將檔案壓縮到指定的檔案當中去,可用"gzip -c file.tar > file.tar.gz")
解壓:gunzip file.tar.gz (將檔案壓縮到指定的檔案當中去,可用"gzip -c file.tar > file.tar.gz")
2.用bzip2操作
壓縮:bzip2 -c file.tar > xifle.tar.bz2
解壓:bunzip2 -cv xfile.tar.bz2 > xfile.tar
3.用xz操作
壓縮:xz -c file.tar > xfile.tar.xz
解壓:unxz -c xfile.tar.xz > xfile.tar

對於壓縮來講,壓縮率顯然是首要關注點,就壓縮率而言,xz>bzip2>gzip,一般情況下xz能比bzip2高出15%的壓縮率,比gzip高出30%的壓縮率,但是另外的有一些東西在具體的場合下還是需要關心的,比如CPU佔有率,xz雖然壓縮比高,但是它的耗時卻是最多的,這意味著佔用了更多的CPU時間片,所以在選擇壓縮演算法的時候還應該考慮到現在的首要關注點是什麼,以此來選擇壓縮演算法。

tar壓縮和解壓

上面分別講解了打包和解壓縮這兩個過程,但這兩個過程是分開的,在通常情況下,這兩個過程不會分開,而是用tar包一步將多個檔案打包壓縮成一個壓縮包,下面將分別使用tar命令呼叫這三種壓縮方式來完成一步將多個檔案打包壓縮成一個壓縮包。

1.用tar呼叫gzip將file1,file2,file3生成壓縮包,並解壓。
壓縮:tar -czvf file.tar.gz file{1,2,3}
解壓:tar -xzvf file.tar.gz
2.用tar呼叫bzip2將file1,file2,file3生成壓縮包,並解壓。
壓縮:tar -cjvf file.tar.gz file{1,2,3}
解壓:tar -xjvf file.tar.gz
3.用tar呼叫xz將file1,file2,file3生成壓縮包,並解壓。
壓縮:tar -cJvf file.tar.gz file{1,2,3}
解壓:tar -xJvf file.tar.gz

對於上面的文字,有點需要注意,那就是字尾名並不是必須的,Linux當中字尾名都不是必須的,這應該是一個基礎點,之所以指定字尾名是為了便於區別,也方便一些粗糙的識別程式。

本文轉載自:http://www.linuxprobe.com/linux-compress.html
免費提供最新Linux技術教程書籍,為開源技術愛好者努力做得更多更好:http://www.linuxprobe.com/