gzip,bzip2,tar,zip命令使用方法詳解
1. gzip
gzip是GNU的壓縮程序。它只對單個文件進行壓縮。基本用法如下:
$ gzip filename
程序執行以後,文件名會變成filename.gz,而且一般情況下大小會比原文件要小。注意,程序並不新建一個新的文件filename.gz, 而是將filename變成filename.gz。這個基本用法考慮了壓縮時間和壓縮後文件尺寸的平衡問題(注:如果要使壓縮後的文件更小,就需要用到更多的時間)。要得到最小文件大小(最大壓縮),可以使用如下用法:
$ gzip -9 filename
這樣就可以得到gzip能夠壓縮的最小文件尺寸,但是需要更長的壓縮時間。上面的數字越小,壓縮就越快,相反壓縮率也就越小。
將gzip壓縮的文件解壓縮,有兩個命令可以使用,但實際上它們是同一個程序。gzip程序可以識別的壓縮文件的後綴名包括:.gz, -gz, .z, -z, .Z 和 -Z。
可以使用的命令是:
$ gunzip filename.gz
或 $ gzip -d filename.gz
使用上面的命令後,filename.gz會被解壓縮並去掉後綴名.gz變成filename。
2. bzip2
bzip2是 Slackware Linux裡面壓縮程序的另一個選擇。它的壓縮算法不同於gzip。與gzip相比,bzip2的主要優點在於它壓縮後文件的尺寸,對於相同文件,bzip2 壓縮後的尺寸幾乎總是小於gzip的壓縮結果。有些時候,這個差距會相當大。bzip2的缺點在於,它占用的CPU的使用率和壓縮時間會比gzip更多。
bzip2的使用方法和gzip是一樣的,但bzip2使用後綴名.bz2.
$ bzip2 filename
$ bunzip2 filename.bz2
$ bzip2 -d filename.bz2
$ bzip2 -9 filename
-c :將壓縮的過程產生的資料輸出到屏幕上。
例如:將文件 man.config 用最佳的壓縮比壓縮,並保留原本的文件
[root@linux tmp]# bzip2 -9 -c man.config > man.config.bz2
bzcat
讀取bz文件中的內容,並顯示到屏幕上,bz文件還存在。比如:
bzcat filename.bz2
3. tar
tar是一個GNU的磁帶歸檔程序。它可以將幾個文件或者目錄打包壓縮成一個文件。這個特點讓我們可以壓縮整個目錄樹,而單使用gzip和 bzip2是無法做到的。
a.tar.gz是先把一些文件用tar打包,然後在用gzip壓縮。
a.tar.bz2是先將一些文件用tar打包,然後再用bzip2壓縮。
tar文件解包:
$ tar xzvf filename.tar.gz 或$ tar -xvzf filename.tar.gz
$ tar xjvf filename.tar.bz2 或$ tar -xvjf filename.tar.bz2
-x表示提取文件。它告訴tar將打包的文件分離還原成打包前的狀態。
-v即verbose,表示詳細細節。加入這個參數讓程序將解包出來的每一個文件列出來。
-z是告訴tar先運行gunzip將文件解壓縮。
-j是告訴tar先運行bunzip將文件解壓縮。
-f是指定tar處理的文件名
這裡需要注意的是,tar會把解包的文件放到當前目錄。所以如果要把一個放在/tmp目錄文件解壓縮到你的家目錄的話,這裡有一些做法可供選擇:
選擇一,把文件拷貝到家目錄,然後解包
$ cd $HOME
$ cp /tmp/filename.tar.gz .
$ tar -xvzf filename.tar.gz
選擇二,指定需要解包文件的路徑
$ cd $HOME
$ tar -xvzf /tmp/finename.tar.gz
選擇三,用-C 參數指定解包後存放文件的路徑
$ cd /
$ tar -xvzf /tmp/filename.tar.gz -C $HOME
tar文件打包:
$ tar -czvf filename.tar.gz .
$ tar -cjvf filename.tar.bz2 ./src/
-c是告訴tar來建立一個打包文件
-z是將打包的文件通過gzip程序進行壓縮。
-j是將打包的文件通過bzip2程序進行壓縮。
-f是指定tar處理的文件名。
filename.tar.gz 是你將要建立的文件名。
命令行最後的"."或"./src/"是指定tar打包的目錄,包括目錄和目錄下所有文件/文件夾。
4. zip
zip文件的壓縮程序叫做zip,解壓縮程序叫做unzip。 Linux支持該命令。
$ zip foo *
這行命令會建立一個包涵當前目錄所有文件的的zip文件 foo.zip,zip會自動將.zip後綴名加上。
加上參數-r使zip將當前目錄下的所有文件夾目錄也加在zip文件中:
$ zip -r foo *
解壓縮文件:
$ unzip foo.zip
這樣會解壓縮foo.zip裡面的所有文件和文件夾。