我的十大IT傑出部落格參賽主頁是:http://2010blog.51cto.com/1060257,請各位支援我,給我投上寶貴一票,謝謝!
隨著Linux開源系統平臺的不斷髮展,越來越多的開源軟體可以提供給Linux使用者使用,這樣,也使得更多的檔案“吞噬”著硬碟空間。作為一種優秀的開源作業系統,如何高效地管理系統中的軟體是一個很重要的問題。Linux提供了多種方法,使用者可以根據實際情況方便地對軟體進行管理。比如,它提供了對檔案打包的功能,使用者可以使用其將若干檔案或目錄打成一個軟體包;同時,它也提供了多種檔案壓縮工具,使得使用者可以對某些檔案進行壓縮,以減小檔案佔用的硬碟空間或方便網路傳輸。本文將通過例子來介紹如何合理地利用這些方法來管理Linux系統中的軟體。
一、Linux下的TAR包管理
TAR命令是在Linux下最常用的檔案打包工具,可以將若干檔案或若干目錄下打包成一個檔案,既有利於檔案管理,也方便壓縮和檔案的網路傳輸。TAR可以為檔案和目錄建立檔案。利用TAR,使用者可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中改變檔案,或者向檔案中加入新的檔案。
1、TAR命令語法及引數選項
TAR命令使用語法如下:
tar [主選項+輔選項] 檔案或者目錄
其中,主選項是必需的,表明tar命令要完成的操作,輔選項是輔助使用的,可以有也可以沒有。下面列出常用的主選項,並簡要說明其功能。
- -A,–catenate,–concatenate :將若干個tar檔案合併成一個tar檔案
- -c,–create :建立一個新的tar檔案
- -d,–diff,–compare:比較tar檔案或檔案系統的不同之處
- –delete:從tar檔案中刪除檔案,但不能磁帶檔案刪除
- -r,–append:在tar檔案尾部追加檔案
- -t,–list:顯示tar檔案內容
- -u,–update:更新tar檔案
- -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下常用的壓縮工具及其產生檔案的字尾:
- gzip/gunzip:字尾名為.gz
- compress/uncompress:字尾名為.Z
- zip/unzip:字尾名為.zip
- bzip2/bunzip2:字尾名為.bz2
- lha:字尾名為.lzh
Linux下壓縮工具中最常用的包括gzip、zip和bzip2三種,下面分別講述這三種最常用的壓縮工具。
1、gzip壓縮工具
gzip是Linux最常用的軟體壓縮工具,在Linux終端輸入man gzip命令降顯示gzip的幫助文件。
該命令的使用形式為:gzip [選項] 壓縮或解壓縮的檔名。
該命令的主要引數選項有:
- -c:將輸出寫到標準輸出上,並保留原有檔案。
- -d:將壓縮檔案解壓。
- -l:對每個壓縮檔案,顯示欄位:壓縮檔案的大小,未壓縮檔案的大小,壓縮比和未壓縮檔案的名字。
- -r:遞迴地查詢指定目錄並壓縮其中的所有檔案或者是解壓縮。
- -t:測試,檢查壓縮檔案是否完整。
- -v:對每一個壓縮和解壓的檔案,顯示檔名和壓縮比。
- -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