我的十大IT傑出部落格參賽主頁是:http://2010blog.51cto.com/1060257,請各位支援我,給我投上寶貴一票,謝謝!

隨著Linux開源系統平臺的不斷髮展,越來越多的開源軟體可以提供給Linux使用者使用,這樣,也使得更多的檔案“吞噬”著硬碟空間。作為一種優秀的開源作業系統,如何高效地管理系統中的軟體是一個很重要的問題。Linux提供了多種方法,使用者可以根據實際情況方便地對軟體進行管理。比如,它提供了對檔案打包的功能,使用者可以使用其將若干檔案或目錄打成一個軟體包;同時,它也提供了多種檔案壓縮工具,使得使用者可以對某些檔案進行壓縮,以減小檔案佔用的硬碟空間或方便網路傳輸。本文將通過例子來介紹如何合理地利用這些方法來管理Linux系統中的軟體。

 

一、Linux下的TAR包管理

TAR命令是在Linux下最常用的檔案打包工具,可以將若干檔案或若干目錄下打包成一個檔案,既有利於檔案管理,也方便壓縮和檔案的網路傳輸。TAR可以為檔案和目錄建立檔案。利用TAR,使用者可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中改變檔案,或者向檔案中加入新的檔案。

1、TAR命令語法及引數選項

TAR命令使用語法如下:

tar [主選項+輔選項] 檔案或者目錄

其中,主選項是必需的,表明tar命令要完成的操作,輔選項是輔助使用的,可以有也可以沒有。下面列出常用的主選項,並簡要說明其功能。

  1. -A,–catenate,–concatenate :將若干個tar檔案合併成一個tar檔案
  2. -c,–create :建立一個新的tar檔案
  3. -d,–diff,–compare:比較tar檔案或檔案系統的不同之處
  4. –delete:從tar檔案中刪除檔案,但不能磁帶檔案刪除
  5. -r,–append:在tar檔案尾部追加檔案
  6. -t,–list:顯示tar檔案內容
  7. -u,–update:更新tar檔案
  8. -x,–extract,–get:從tar檔案中取出檔案

每次使用tar命令時,上述8個命令引數選項必須選擇一個,用以指明操作型別。

2、建立tar檔案

建立一個tar檔案要使用主引數選項c,並指明建立tar檔案的檔名。下面假設當前目錄下有smart和xplns兩個子目錄以及cpuinfo.txt,smart.txt,tar.txt ,tar_create.txt四個檔案,smart目錄下有smartsuite-2.1-2.i386.rpm檔案,xplns目錄下有xplns-cat-3.3.1-1.i386.rpm,xplns-elm-3.3.1-1.i386.rpm和xplns-img-3.3.1-1.i386.rpm三個檔案。用ll –r命令顯示當前目錄下檔案資訊如下:

#ll -r ./*
-rwx------1 root     root     7433  10月 12 21:25 ./tar.txt
-rwx------1 root     root      226  10月 12 21:25 ./tar_create.txt
-rwx------1 root     root       26  10月 12 21:25 ./smart.txt
-rwx------1 root     root       26  10月 12 21:25 ./cpuinfo.txt
 
./xplns:
總用量 1613
-rwx------1 root    root    793828  10月 12 21:26 xplns-img-3.3.1-1.i386.rpm
-rwx------1 root    root    572471  10月 12 21:26 xplns-elm-3.3.1-1.i386.rpm
-rwx------1 root    root   1933576  10月 12 21:26 xplns-cat-3.3.1-1.i386.rpm
 
./smart:
總用量 17
-rwx------1 root     root   34475  10月 12 21:25 smartsuite-2.1-2.i386.rpm

若要在該目錄下將所有檔案打包成gong.tar檔案,可以使用如下命令:

//引數c指明建立tar,引數f指明是建立檔案,引數v指明顯示處理詳細過程
# tar cvf gong.tar ./*
./cpuinfo.txt
./smart/
./smart/smartsuite-2.1-2.i386.rpm
./smart.txt
./tar_create.txt
./tar.txt
./xplns/
./xplns/xplns-cat-3.3.1-1.i386.rpm
./xplns/xplns-elm-3.3.1-1.i386.rpm
./xplns/xplns-img-3.3.1-1.i386.rpm
 
//顯示當前目錄下所有檔案,從顯示結果可以發現,當前目錄下多了一個gong.tar檔案,就是由剛才tar命令生成的
#ll
總用量 4927
-rwx------    1 root     root      3358720  10月 12 19:35 cpuinfo.txt
-rwx------    1 root     root      6717440  10月 12 19:36 gong.tar
drwx------    1 root     root            0   10月  8 21:37 smart
-rwx------    1 root     root           26   10月  8 21:37 smart.txt
-rwx------    1 root     root          226   10月 12 19:32 tar_create.txt
-rwx------    1 root     root         7433   10月 12 17:13 tar.txt
drwx------    1 root     root         4096   10月 12 19:34 xplns

3、顯示tar檔案內容

對於一個已存在的tar檔案,使用者可能想了解其內容是由哪些檔案和目錄打包而來的,這就要用帶t引數的tar命令。例如對於上述產生的gong.tar檔案,若欲顯示其檔案內容,可使用如下命令:

# tar tf gong.tar
./cpuinfo.txt
./smart/
./smart/smartsuite-2.1-2.i386.rpm
./smart.txt
./tar_create.txt
./tar.txt
./xplns/
./xplns/xplns-cat-3.3.1-1.i386.rpm
./xplns/xplns-elm-3.3.1-1.i386.rpm
./xplns/xplns-img-3.3.1-1.i386.rpm

4、向tar檔案中新增一個檔案

欲向已存在的一個tar檔案中新增一個檔案或目錄,可以使用帶-r主選項引數的tar命令。例如欲向上面所述產生的gong.tar檔案中新增tar_t.txt檔案,可以使用如下步驟:

(1)在檔案gong.tar圖示上右鍵單擊滑鼠,系統顯示快捷選單。

(2)單擊【新增到壓縮檔案】選單項,系統將顯示【新增檔案或資料夾】對話方塊,在對話方塊中輸入欲加入的檔案或資料夾,或者單擊【瀏覽(B)】按鈕選擇某個檔案或資料夾,若選中【僅新增新檔案(N)】核取方塊,則當新增的檔案或資料夾在tar檔案中已經存在時,系統並不加入該檔案或資料夾。單擊【增加(A)】按鈕即可完成新增工作。

5、從tar檔案中取出檔案

在已經存在的tar檔案中解包,可以使用帶主選項引數-x的tar命令實現。下面以gong.tar檔案為例,說明帶主選項引數-x的tar命令的用法。

//首先顯示當前目錄下檔案列表,由顯示結果可見,當前目錄下只有一個檔案gong.tar。
#ll
總用量 3280
-rwx------    1 root     root      6717440  10月 12 21:12 gong.tar
//對當前目錄下gong.tar檔案解包
#tar –x gong.tar
//再顯示解包後當前目錄下所有檔案,由顯示結果可以看出,tar檔案中所有檔案均已解出
#ll
總用量 4927
-rwx------  1 root     root     3358720  10月 12 21:13 cpuinfo.txt
-rwx------  1 root     root     6717440  10月 12 21:12 gong.tar
drwx------  1 root     root           0   10月 12 21:13 smart
-rwx------  1 root     root          26   10月 12 21:13 smart.txt
-rwx------  1 root     root         226   10月 12 21:13 tar_create.txt
-rwx------  1 root     root        7433   10月 12 21:13 tar.txt
drwx------  1 root     root        4096   10月 12 21:13 xplns

二、Linux下常用的壓縮工具

對檔案進行壓縮的目的有兩個:一是可以減少儲存空間,二是通過網路傳輸檔案時,可以減少傳輸的網路開銷。Linux下的壓縮工具有很多,下面列出Linux下常用的壓縮工具及其產生檔案的字尾:

  1. gzip/gunzip:字尾名為.gz
  2. compress/uncompress:字尾名為.Z
  3. zip/unzip:字尾名為.zip
  4. bzip2/bunzip2:字尾名為.bz2
  5. lha:字尾名為.lzh

Linux下壓縮工具中最常用的包括gzip、zip和bzip2三種,下面分別講述這三種最常用的壓縮工具。

1、gzip壓縮工具

gzip是Linux最常用的軟體壓縮工具,在Linux終端輸入man gzip命令降顯示gzip的幫助文件。

該命令的使用形式為:gzip [選項] 壓縮或解壓縮的檔名。

該命令的主要引數選項有:

  1. -c:將輸出寫到標準輸出上,並保留原有檔案。
  2. -d:將壓縮檔案解壓。
  3. -l:對每個壓縮檔案,顯示欄位:壓縮檔案的大小,未壓縮檔案的大小,壓縮比和未壓縮檔案的名字。
  4. -r:遞迴地查詢指定目錄並壓縮其中的所有檔案或者是解壓縮。
  5. -t:測試,檢查壓縮檔案是否完整。
  6. -v:對每一個壓縮和解壓的檔案,顯示檔名和壓縮比。
  7. -num:用指定的數字num調整壓縮的速度,-1或–fast表示最快壓縮方法(低壓縮比),-9或–best表示最慢壓縮方法(高壓縮比)。系統預設值為6。

(1)用gzip壓縮檔案:下面給出使用gzip命令壓縮檔案的例子:

//顯示當前目錄先所有檔案
#ll
總用量 5
-rwx------    1 root     root           26  10月 13 22:16 smart.txt
-rwx------    1 root     root          226  10月 13 22:16 tar_create.txt
-rwx------    1 root     root         7433  10月 13 22:16 tar.txt
 
//壓縮當前目錄下的所有檔案,並且顯示壓縮比,顯示已經替代原來的檔案
#gzip -v *   //-v參數列明顯示壓縮比和檔名
smart.txt:         0.0% -- replaced with smart.txt.gz
tar_create.txt:  43.8% -- replaced with tar_create.txt.gz
tar.txt:          68.3% -- replaced with tar.txt.gz
 
//再顯示當前目錄所有檔案,可以發現所有檔案都壓縮成了gz檔案
#ll
總用量 3
-rwx------    1 root     root           54  10月 13 22:17 smart.txt.gz
-rwx------    1 root     root          160  10月 13 22:17 tar_create.txt.gz
-rwx------    1 root     root         2385  10月 13 22:17 tar.txt.gz

注意:gzip只能對單個檔案壓縮,不能像Winzip和Winrar一樣,可以將多個檔案壓縮成一個.zip檔案或.rar檔案。正因為如此,Linux才提供了tar命令,用於將若干檔案或資料夾打包成一個檔案,然後再壓縮成一個.gz檔案。

(2)用gzip解壓縮檔案:下面給出用gzip解壓縮檔案的例子:

//對當前目錄下所有壓縮的檔案解壓,並列出詳細的資訊。
#gzip -dv *
smart.txt.gz:              0.0% -- replaced with smart.txt
tar_create.txt.gz:       43.8% -- replaced with tar_create.txt
tar.txt.gz:                68.3% -- replaced with tar.txt
 
//再顯示當前目錄下的所有檔案,從顯示結果看出,所有的.gz壓縮檔案都已經解壓縮了
#ll
總用量 5
-rwx------    1 root     root           26  10月 13 22:22 smart.txt
-rwx------    1 root     root          226  10月 13 22:22 tar_create.txt
-rwx------    1 root     root         7433  10月 13 22:22 tar.txt

(3)顯示壓縮檔案的內容資訊:可以用帶-l引數的gzip命令顯示gz檔案的內容。這只是顯示檔案內容,並不實際解壓縮檔案。

# gzip -l *
compressed        uncompressed  ratio   uncompressed_name
    54                  26          0.0%      smart.txt
    160                 226        43.8%     tar_create.txt
   2385                7433        68.3%     tar.txt
   2599                7685        66.5%    (totals)

(4)在tar命令中嵌入壓縮命令:在tar命令中就可以直接嵌入gzip命令,從而直接將若干檔案或資料夾處理成一個.tar.gz檔案。在這個處理過程中,系統先將若干檔案或資料夾打包成.tar,然後將生成的.tar檔案壓縮成.tar.gz檔案。先舉例如下:

//將當前目錄下所有檔案打包並壓縮成gong.tar.gz並顯示處理進度
# tar cvfz gong.tar.gz  ./*
./smart.txt
./tar_create.txt
./tar.txt
 
//再顯示當前目錄下所有檔案,從顯示結果可以看出,已經產生了gong.tar.gz檔案
#ll
總用量 7
-rwx------    1 root     root         2704  10月 13 22:59 gong.tar.gz
-rwx------    1 root     root           26  10月 13 22:51 smart.txt
-rwx------    1 root     root          226  10月 13 22:51 tar_create.txt
-rwx------    1 root     root         7433  10月 13 22:51 tar.txt