如何在Linux下壓縮文件

對許多用戶來講,在DOS和Windows環境下利用工具軟件WinZip、ARJ等壓縮或解壓文件是比較容易的事。可是,在Linux中如何對文件進行壓縮與解壓呢? 用tar創建存檔 tar是「tape archive」(磁帶存檔)的簡稱,它出如今尚未軟盤驅動器、硬盤和光盤驅動器的計算機早期階段。那時軟件的發行和備份都須要大卷的磁帶,計算機上運行的頭幾個程序中就得有一個是磁帶的閱讀程序。隨着時間的推移, tar命令逐漸變爲一個將不少文件進行存檔的工具,目前許多用於Linux操做系統的程序就是打包爲tar檔案文件的形式。 tar 命令的格式是: tar [option] <file> tar命令有不少參數,利用f選項、設備或文件的名字能夠指示tar命令將檔案置於特定的設備或文件中。當爲tar的檔案建立一個文件時,這個文件名的擴展一般是若是指定了一個目錄名,那麼它全部的子目錄都會被包含在檔案之中。 利用tar命令和f選項的格式以下所示: #tar opionsf archive-name.tar directory-and-filenames 要建立一個檔案應使用c選項,與f選項一塊兒,c選項會在設備或文件中建立檔案,應在f選項的左邊輸入這一選項。在下例中,目錄mydir和它全部的子目錄都被存入文件myarch.tar中。 #tar cf myarch.tar mydir 若是想要改動已經存檔的目錄中的文件,可使用u選項使tar更新檔案中的文件。tar比較每個檔案文件與相應用戶目錄中文件最近一次修改的時間,而後將上一次存檔以後又被修改過的文件拷貝到檔案文件中去。在用戶目錄中新建立的文件也會被添加到檔案文件中。在下面的例子中,用戶用mydir目錄中最近被修改或添加的文件來對myarch.tar文件進行更新。 #tar uf myarch.tar mydir 若是想查看在一個檔案中存儲着哪些文件,可使用tar命令和t選項。下面命令列出全部存儲在myarch.tar檔案中的文件: #tar tf myarch.tar 要將文件備份到一個特定的設備,只須把設備名做爲檔案。在下面的例子中,用戶在/dev/fdo設備的軟盤中建立了一個檔案,並將mydir目錄中全部的文件都拷貝到檔案中。 #tar cf/dev/fdo mydir 要恢復設備磁盤中的文件,可以使用xf選項: #tar xf/dev/fdo 若是所備份的文件大小超過設備可用的存儲器,好比軟盤,此時就能夠建立一個使用多個標號的tar檔案。當使用m選項向一個軟驅進行存檔時,tar命令在一張軟盤已滿的時候會提醒再放入一張新的軟盤。 #tar cmf/dev/fdo mydir 要想恢復幾張盤中的檔案,只要將第一張軟盤放入軟驅,而後輸入有x和m選項的tar命令。必要時會被提醒放入另一張軟盤。 #tar xmf/dev/fdo tar操做不會對檔案文件實行壓縮操做。若是想壓縮檔案文件,能夠指示tar激活gzip實用工具,在存檔以前對文件進行壓縮。利用z選項,tar在對文件存檔以前首先要使用gzip來壓縮文件。當恢復文件時,一樣的Z選項將激活gzip對文件解壓。 #tar czf myarch.tar mydir 值得注意的是,壓縮檔案中的單個文件和總體壓縮檔案是不一樣的。一般檔案文件是爲了便於傳輸而把幾個文件組合成爲一個tar文件。爲了縮短傳輸時間,檔案應當越小越好,能夠將其壓縮而後傳送壓縮後的版本。接收者能夠對之解壓縮,而後恢復tar文件。在tar文件上使用gzip將會產生有.tar.gz擴展名的文件。擴展名.gz被加到被壓縮的gzip文件名以後。 下面的例子建立了myarch.tar的一個壓縮的版本,它具備了.gz的擴展名。 #gzip myarch.tar #ls #myarch.tar.gz tar命令雖然有很是多的參數,可是使用起來並不困難,能夠快速而又簡單地爲任何須要的子目錄生成檔案文件。 首先,咱們來創建一個有三個文件的子目錄,再創建一個有另外三個文件的子目錄,以下所示: # mkdir mydir #cd mydir # touch file1 file2 file3 # mkdir mydir2 #cd mydir2 # touch file21 file22 file23 #cd../.. #tree mydir mydir file1 file2 file3 mydir2 file21 file22 file23 如今已經有了一個子目錄和其中的文件,使用這個命令的c(生成)和f(文件)參數來生成一個tar檔案文件: # tar cf mydir.tar mydir # ls -l *.tar - r w - r - - r - - 1 bball u s e r s 10240 Jan 5 15 : 01 mydir. t a r 請注意,原來的子目錄並無發生變化。在缺省的狀況下,tar命令不會刪除原來的子目錄和文件。若是想看看命令執行的過程,可使用v參數,以下所示: # tar cvf mydir.tar mydir mydir/ mydir/file1 mydir/file2 mydir/file3 mydir/mydir2/ mydir/mydir2/file21 mydir/mydir2/file22 mydir/mydir2/file23 tar命令在進行操做的時候,就會把正在添加到檔案文件中去的子目錄和文件的文件名顯示出來。使用w參數,即交互參數,這樣tar命令在執行的過程中會詢問是否想加入每一個文件。當想有選擇地備分內容很少的子目錄的時候,這樣就很是地方便,以下所示: # tar cwf mydir.tar mydir add mydir?y add mydir/file1?n add mydir/file2?y add mydir/file3?n add mydir/mydir2?y add mydir/mydir2/file21?y add mydir/mydir2/file22?n add mydir/mydir2/file23?y 在上面的例子中,沒有把文件file一、file3和文件file22歸檔。可使用tar命令的t參數列出檔案文件中的內容,f參數定義操做所使用的tar檔案文件,以下所示: # tar tf mydir.tar mydir/ mydir/file2 mydir/mydir2/ mydir/mydir2/file21 mydir/mydir2/file23 須要注意的是,若是參數的順序放錯了,tar命令會顯示出錯信息並退出。 下面就來看看如何來釋放整個的檔案文件或者其中的某一個文件。若是想釋放其中全部的文件,能夠同時使用-x釋放參數和-f。爲了瞭解命令執行的過程,還能夠加上-v參數: # tar xvf mydir.tar mydir/ mydir/file2 mydir/mydir2/ mydir/mydir2/file21 mydir/mydir2/file23 若是隻是想從檔案文件中釋放幾個文件的話,能夠再次使用w參數: # tar xvwf mydir.tar extract mydir/?y mydir extract mydir/file2?y mydir/file2 extract mydir/mydir2/?y mydir/mydir2/ extract mydir/mydir2/file21?y mydir/mydir2/file21 extract mydir/mydir2/file23?y mydir/mydir2/file23 上例代表查看了檔案文件,並交互地釋放了文件。若是隻想從檔案文件中釋放某一個文件,能夠在命令行中指定這個文件。做爲示例,我先刪除了原始的mydir子目錄,而後使用一個空的子目錄進行以下操做: # tar xf mydir.tar mydir/mydir2/file23 # tree mydir m y d i r - - mydir2 - - file23 1 directory, 1 file 注意,正如所看到的只有一個文件被釋放出來。雖然tar命令不會覆蓋整個的子目錄,可是它會覆蓋掉那些有着相同文件名的文件。 值得一提的是,還可使用其它程序,如BRU-2000或者taper腳本程序來備份系統或者選定的文件和子目錄。OpenLinux操做系統也能夠經過cron日程安排來自動進行文件的歸檔整理工做。 創建cpio檔案文件 cpio命令能夠從tar或者cpio檔案文件中拷入或者拷出文件。由於cpio命令和tar命令兼容,因此我這裏再也不詳細介紹它如何工做。可是這個命令具有一些tar命令沒有的功能,以下所示: ◆ 支持cpio和tar兩種檔案文件格式; ◆ 支持許多老式磁帶數據格式; ◆ 可以經過一個管道讀取文件的文件名。 只有不多的Linux軟件包是以cpio格式發行的。若是對cpio命令的詳細狀況感興趣的話,能夠閱讀它的使用手冊。 使用gzip壓縮文件 gzip命令是用來壓縮文件的。它不只能夠用來壓縮大的、較少使用的文件以節省磁盤空間,還能夠和tar命令一塊兒構成Linux操做系統中比較流行的壓縮文件格式。據統計,gzip命令對文本文件有60%~70%的壓縮率。 gzip命令的格式是: gzip [option] [file] gzip很容易使用。若是想壓縮某個文件或者磁帶檔案文件,可輸入下面的內容: # gzip mydir.tar 在缺省的狀態下,gzip會壓縮文件、再加上一個.gz擴展名,而後刪除掉原來的文件。若是想解壓縮文件,可使用gzip的對應程序命令gunzip或者gzip命令的-d解壓縮參數。可是必須保證這個用於解壓縮的文件有.gz(或者.Z、-gz、.z、-z、或者_z)擴展名,不然gzip命令和gunzip命令都會顯示出錯信息。若是想使用本身的擴展名,可使用-S後綴參數,以下所示: # gzip -S .gzipped mydir.tar gzip還能夠處理用zip命令、compress命令和pack命令壓縮的文件包。若是想在壓縮或者解壓縮的過程當中看到更多的信息,可使用-l列清單參數看到文件在被壓縮或解壓縮的時候的文件長度。在前一個例子中,壓縮完子目錄mydir以後,可使用gzip命令按照下面的方法獲得有關的數據: # gzip -l mydir.tar.gz compressed uncompr.ratio uncompressed_name 312 21330 98.2% mydir.tar 此外,gzip還有一個頗有用的參數-t,能夠用來測試壓縮文件的完整性。若是文件正常,gzip不會給出任何顯示。若是想看到OK這兩個字母,能夠在測試某個文件時使用-tv參數。 使用compress壓縮文件 compress命令就像它的文件名那樣是用來壓縮文件的。這是Unix中出現得比較早的一個壓縮程序,它經過使用自適應的Lemple-Ziv編碼來縮小所指文件的大小。每個文件將被一個帶有.Z擴展名的壓縮文件所代替,但文件的屬主關係、訪問時間和修改時間將保持不變。若是沒有指點文件,則接受標準輸入的文件進行壓縮並送到標準輸出。 compress命令格式是: compress [option] [file] 與compress對應的有一個解壓縮命令uncompress,其格式以下: uncompress [option] [file] 它使「.Z」的壓縮文件恢復。 compress和uncompress命令的選項以下: ◆-c 寫到標準輸出,不改變文件。 ◆-f 強制壓縮,即便文件並不真正減少或.Z文件已經存在,也進行壓縮。 ◆-v 顯示每個被壓縮文件的縮小的百分比。 下面舉例說明compress命令的用法: #compress file 上面代碼代表將生成壓縮文件file.Z代替file,要解壓縮輸入: #uncompress file.Z 注意,像使用gzip命令同樣,使用uncompress命令時必須給出一個帶有.Z擴展名的文件名,不然uncompress命令顯示出錯信息。
相關文章
相關標籤/搜索