Linux作業系統打包命令使用方法

來源:互聯網
上載者:User

Saturday, 25. February 2006, 12:30:13

  本人在Unix系統業務使用(特別是資料管理與備份)中,經過一番研究、整理後,充分利用Unix系統本身的命令tar、cpio和compress等來做到打包和壓縮,使之充當類似DOS下的壓縮軟體,同時在Unix系統中亦具有通用性。

  在Unix系統中,是先通過cpio或tar將眾多的檔案打包成一個檔案庫後,再用compress將檔案庫壓縮來達到目的的。下面分別以cpio和tar來說明使用的方法和步驟。

  一、cpio

  1.檔案或目錄打包。

  打包有如下多種情況:

  A)含子目錄打包:

  find /usr/lib -print|cpio -o〉/u0/temp1.cpio

  將/usr /lib目錄下的檔案與子目錄打包成一個檔案庫為/u0/temp1.cpio。

  若通過-o選項來打包整個目錄下的所有檔案與子目錄,常先利用find目錄名-print來找出所有檔案與子目錄的名稱,通過管道“|”傳給cpio打包。

  B)不含子目錄的打包:

  ls /usr/lib|cpio -o〉/u0/temp1.cpio

  將/usr/lib目錄下的檔案(不含子目錄下的檔案)打包成一個檔案庫為/u0/temp1.cpio。

  C)特定檔案打包:

  可利用文本搜尋命令grep與管道配合,可以排除或選擇特定類型的檔案傳給cpio打包。如:ls /usr/lib/*.c|cpio -o〉/u0/temp1.cpio

  或ls /usr/lib|grep ′.c$′|cpio -o〉/u0/temp1.cpio

  意思均為找出/usr/lib目錄下以.c結尾的檔案予以打包。

  又如:ls /usr/lib|grep abcd|cpio -o〉/u0/temp1.cpio ,其意為找出/usr/lib目錄下檔案名稱中含有abcd字元的檔案予以打包。

  ls /usr/lib|grep -v abcd|cpio -o〉/u0/temp1.cpio,其意為找出/usr/lib目錄下檔案名稱中不含 abcd 字元的檔案予以打包。-v選項在grep命令中的意思是排除含有字串的行列。

  如此,可充分利用Unix的管道和一些命令的強大功能來實現檔案的打包。

2.壓縮:

  檔案打包完成後,即可用Unix中的compress命令(/usr/bin下)壓縮打包檔案。對一般的文字檔,壓縮率較高,可達81%。

  compress /u0/temp1.cpio則將檔案庫/u0/temp1.cpio壓縮為/u0/temp1.cpio.Z(自動添加.Z並刪除/u0/temp1.cpio )。

  3.解壓:

  uncompress /u0/temp1.cpio.Z則自動還原為/u0/temp1.cpio。

  4.解包展開:

  將按原目錄結構解包展開到當前所在目錄下。若以相對路徑打包的,當解包展開時,也是以相對路徑存放展開的檔案資料;若以絕對路徑打包的,當解包展開時,也是以絕對路徑存放展開的檔案資料。因此注意若為相對路徑,應先進入相應的目錄下再展開。

  cd /u1

  cpio -id〈/u0/tmp1.cpio則將/u0/temp1.cpio解壓到/u1下(這裡假設temp1.cpio以相對路徑壓縮)。

  若加u選項,如cpio -iud〈/u0/temp1.cpio則檔案若存在將被覆蓋,即強制覆蓋。

  cpio -id〈/u0/temp1.cpio *.c 則展開其中的*.c檔案,類似於DOS系統中的Pkzip軟體中Pkunzip -d temp1.zip解包功能。

  5.顯示:

  cpio -it〈/u0/temp1.cpio [*.c] 顯示檔案庫內的檔案名稱,類似於DOS系統中的Pkzip軟體中Pkunzip -vbnm temp1.zip功能。

二、tar

  1.檔案或目錄打包:

  tar -cvf /u0/temp2.tar /usr/lib

  將/usr/lib目錄下的檔案與子目錄打包成一個檔案庫為/u0/temp2.tar。

  tar -cvf /u0/temp2.tar /usr/lib *.c *.f

  將/usr/lib目錄下的*.c *.f等檔案(不含子目錄)打包。

  注意:如果指定檔案如*.c *.f或*.*,則打包時均不含子目錄。如果指定為.或*,則含子目錄。

2.壓縮:

  同上:compress /u0/temp2.tar壓縮為/u0/temp2.tar.Z

  3.解壓:

  uncompress /u0/temp2.tar.Z則還原為/u0/temp2.tar。

  4.解包展開:

  tar -xvf /u0/temp2.tar

  若以相對路徑打包的,解包時,以相對路徑存放展開的檔案資料;若以絕對路徑打包的,解包時,以絕對路徑存放展開的檔案資料。

  若指定展開的檔案名稱,須注意檔案的目錄路徑。

  5.顯示:

  tar -tvf /u0/temp2.tar 顯示檔案庫內的檔案名稱。當指定檔案名稱時,亦須注意檔案的路徑。

  相對來說這兩個命令各有優缺點。

  1)tar速度比cpio慢,且不能跨越兩份儲存媒體,但檔案格式幾乎在所有的Unix系統中都能通用,且使用簡便。

  2)cpio則由於可通過管道功能,使得其打包時的檔案選擇、排除功能非常強,且能跨越多份媒體,並能備份特殊的系統檔案。

  另外,壓縮命令compress比DOS下的Pkzip的壓縮率要低些。經測試,在一個目錄下527個文字檔共15.7MB,在Unix打包後用compress壓縮,大小為 2.1MB;相同的檔案拷到DOS系統用Pkzip壓縮,則大小為1.4MB。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.