天天看點

gzip,zip,bzip2 檔案壓縮和歸檔

本文轉載自https://my.oschina.net/aiguozhe/blog/38457

檔案壓縮和歸檔

有時候,我們需要把一組檔案貯存成一個檔案以便備份或傳輸到另一個目錄甚至另一個計算機上。有時候,我們還需要把檔案壓縮成一個檔案,因而它們僅使用少量磁盤空間并能更快地通過網際網路下載下傳。

了解歸檔檔案(archive file)和壓縮檔案(compressed file)間的差別對使用者來說十分重要。歸檔檔案是一個檔案和目錄的集合,而這個集合被貯存在一個檔案中。歸檔檔案沒有經過壓縮 — 它所使用的磁盤空間是其中所有檔案和目錄的總和。壓縮檔案也是一個檔案和目錄的集合,且這個集合也被貯存在一個檔案中,但是,它的貯存方式使其所占用的磁盤空間比其中所有檔案和目錄的總和要少。如果你在計算機上的磁盤空間不足,你可以壓縮不常使用的、或不再使用但想保留的檔案。你甚至可以建立歸檔檔案,然後再将其壓縮來節省磁盤空間。

注記
歸檔檔案不是壓縮檔案,但是壓縮檔案可以是歸檔檔案。

使用檔案打包器

Red Hat Linux 包括了一個圖形化的壓縮工具“檔案打包器”。它可以壓縮、解壓、并歸檔檔案和目錄。檔案打包器支援通用的 UNIX 和 Linux 檔案壓縮和歸檔格式,而且它的界面簡單,文檔豐富。它還被內建到桌面環境和圖形化檔案管理器中,使處理歸檔檔案的工作更加簡便易行。

要啟動 檔案打包器,點選「主菜單」 => 「附件」 => 「檔案打包器」。你還可以從 shell 提示下鍵入 file-roller 來啟動檔案打包器。圖 14-1顯示了運作中的檔案打包器。

竅門
如果你使用的是檔案管理器(如 Nautilus),你可以輕按兩下你想解除歸檔或解壓的檔案來啟動檔案打包器。檔案打包器的浏覽視窗就會出現,其中的檔案夾裡顯示了你要解壓或解除歸檔的檔案,以便你來抽取或浏覽。
圖 14-1. 運作中的檔案打包器

使用檔案打包器來解壓或解除歸檔

要取消歸檔或者(并且)解壓檔案,點選工具欄上的「打開」按鈕。一個檔案菜單就會彈出,允許你選擇你要操作的歸檔。譬如,如果你的主目錄中有一個 foo.tar.gz 檔案,突出顯示該檔案,然後點選「确定」。該檔案就會作為檔案夾出現在檔案打包器的主浏覽視窗中,你可以輕按兩下該檔案夾圖示來翻閱其中的内容。檔案打包器保留所有原有的目錄和子目錄結構,這便于你在歸檔中查找某一特定檔案。你可以點選「抽取」按鈕,選擇你要儲存這些解除歸檔後的檔案的目錄,然後點選「确定」按鈕來抽取其中的某個檔案或整個歸檔。

使用檔案打包器來建立歸檔檔案

如果你需要騰出一些硬碟空間,或者把多個檔案或某一目錄下的所有檔案發送給另一名使用者,檔案打包器允許你建立檔案和目錄的歸檔。要建立新歸檔,點選工具欄上的「建立」按鈕。一個檔案浏覽器會彈出,允許你指定歸檔名稱和壓縮技術。譬如,你可以從拉下菜單中選擇「用 gzip 壓縮的 Tar (tar.gz) 格式,然後鍵入你想建立的歸檔檔案的名稱。點選「确定」,你就可以在新歸檔中添加檔案和目錄了。要在你的新歸檔中添加檔案,點選「添加」,這會彈出一個浏覽視窗(圖 14-2),你可以從中查找要放入歸檔中的檔案或目錄。結束後點選「确定」和「關閉」按鈕來關閉歸檔。

圖 14-2. 使用檔案打包器來建立歸檔

竅門
檔案打包器能夠執行的任務不止這裡提到的這些。請閱讀檔案打包器 的說明書(點選「幫助」 => 「說明書」)來擷取詳細資訊。

在 shell 提示下壓縮檔案

壓縮檔案使用較少磁盤空間,并且比未壓縮的大檔案下載下傳速度要快。在 Red Hat Linux 中,你可以使用的檔案壓縮工具有:gzip、bzip2、和 zip。

推薦你使用 bzip2 壓縮工具,因為它提供了最大限度的壓縮,并且可在多數類似 UNIX 的作業系統上找到。gzip 壓縮工具也可以在類似 UNIX 的作業系統上找到。如果你需要在 Linux 和其它作業系統如 MS Windows 間傳輸檔案,你應該使用 zip,因為該指令與 Windows 上的壓縮工具最相容。

壓縮工具 檔案擴充名 解壓工具
gzip .gz gunzip
bzip2 .bz2 bunzip2
zip .zip unzip

表 14-1. 壓縮工具

按照約定俗成,用 gzip 來壓縮的檔案的擴充名是 .gz;用 bzip2 來壓縮的檔案的擴充名是 .bz2;用 zip 壓縮的檔案的擴充名是 .zip。

用 gzip 壓縮的檔案可以使用 gunzip 來解壓;用 bzip2 壓縮的檔案可以使用 bunzip2 來解壓;用 zip 壓縮的檔案可以使用 unzip 來解壓。

bzip2 和 bunzip2

要使用 bzip2 來壓縮檔案,在 shell 提示下鍵入以下指令:

檔案即會被壓縮并被儲存為 filename.bz2。

要擴充壓縮的檔案,鍵入以下指令:

bunzip2 filename.bz2
           

filename.bz2 檔案會被删除,而繼之以 filename。

你可以使用 bzip2 指令同時處理多個檔案和目錄,方法是将它們逐一列出,并用空格間隔:

bzip2 filename.bz2 file1 file2 file3 /usr/work/school
           
上面的指令把 file1、file2、 file3、以及 /usr/work/school 目錄的内容(假設這個目錄存在)壓縮起來,然後放入 filename.bz2 檔案中。
竅門
要獲得有關這兩個指令的詳細資訊,在 shell 提示下鍵入 man bzip2 和 man bunzip2 來閱讀 bzip2 和 bunzip2 指令的說明書頁。

gzip 和 gunzip

要使用 gzip 來壓縮檔案,在 shell 提示下鍵入以下指令:

檔案即會被壓縮,并被儲存為 filename.gz。

要擴充壓縮的檔案,鍵入以下指令:

gunzip filename.gz
           

filename.gz 會被删除,而繼之以 filename。

你可以使用 gzip 指令同時處理多個檔案和目錄,方法是将它們逐一列出,并用空格間隔:

gzip -r filename.gz file1 file2 file3 /usr/work/school
           
上面的指令把 file1、file2、 file3、以及 /usr/work/school 目錄的内容(假設這個目錄存在)壓縮起來,然後放入 filename.gz 檔案中。
竅門
要獲得有關這兩個指令的詳細資訊,在 shell 提示下鍵入 man gzip 和 man gunzip 來閱讀 gzip 和 gunzip 指令的說明書頁。

zip 和 unzip

要使用 zip 來壓縮檔案,在 shell 提示下鍵入下面的指令:
zip -r filename.zip filesdir
           

在這個例子裡,filename.zip 代表你建立的檔案,filesdir 代表你想放置新 zip 檔案的目錄。-r 選項指定你想遞歸地(recursively)包括所有包括在 filesdir 目錄中的檔案。

要抽取 zip 檔案的内容,鍵入以下指令:

unzip filename.zip
           
你可以使用 zip 指令同時處理多個檔案和目錄,方法是将它們逐一列出,并用空格間隔:
zip -r filename.zip file1 file2 file3 /usr/work/school
           
上面的指令把 file1、file2、 file3、以及 /usr/work/school 目錄的内容(假設這個目錄存在)壓縮起來,然後放入 filename.zip 檔案中。
竅門
要獲得有關這兩個指令的詳細資訊,在 shell 提示下鍵入 man zip 和 man unzip 來閱讀 zip 和 unzip 指令的說明書頁。

在 shell 提示下給檔案歸檔

tar 檔案是幾個檔案和(或)目錄在一個檔案中的集合。這是建立備份和歸檔的佳徑。

tar 使用的選項有:

  • -c — 建立一個新歸檔。
  • -f — 當與 -c 選項一起使用時,建立的 tar 檔案使用該選項指定的檔案名;當與 -x 選項一起使用時,則解除該選項指定的歸檔。
  • -t — 顯示包括在 tar 檔案中的檔案清單。
  • -v — 顯示檔案的歸檔進度。
  • -x — 從歸檔中抽取檔案。
  • -z — 使用 gzip 來壓縮 tar 檔案。
  • -j — 使用 bzip2 來壓縮 tar 檔案。
要建立一個 tar 檔案,鍵入:

在以上的例子中,filename.tar 代表你建立的檔案,directory/file 代表你想放入歸檔檔案内的檔案和目錄。

你可以使用 tar 指令同時處理多個檔案和目錄,方法是将它們逐一列出,并用空格間隔:

tar -cvf filename.tar /home/mine/work /home/mine/school
           

上面的指令把 /home/mine 目錄下的 work 和 school 子目錄内的所有檔案都放入目前目錄中一個叫做 filename.tar 的新檔案裡。

要列出 tar 檔案的内容,鍵入:

tar -tvf filename.tar
           
要抽取 tar 檔案的内容,鍵入:
tar -xvf filename.tar
           

這個指令不會删除 tar 檔案,但是它會把被解除歸檔的内容複制到目前的工作目錄下,并保留歸檔檔案所使用的任何目錄結構。譬如,如果這個 tar 檔案中包含一個叫做 bar.txt 的檔案,而這個檔案包含在 foo/ 目錄中,那麼,抽取歸檔檔案将會導緻在你目前的工作目錄中建立 foo/ 目錄,該目錄中包含 bar.txt檔案。

請記住,tar 預設不壓縮檔案。要建立一個使用 tar 和 bzip 來歸檔壓縮的檔案,使用 -j 選項:

按照約定俗成,用 bzip2 壓縮的 tar 檔案具有 .tbz 擴充名。不過,有時使用者使用 tar.bz2 擴充名來歸檔他們的檔案。

以上指令建立了一個歸檔檔案,然後将其壓縮為 filename.tbz 檔案。如果你使用 bunzip2 指令為 filename.tbz 檔案解壓,filename.tbz 檔案會被删除,繼之以 filename.tar 檔案。

你還可以用一個指令來擴充并解除歸檔 bzip tar 檔案:

tar -xjvf filename.tbz
           
要建立一個用 tar 和 gzip 歸檔并壓縮的檔案,使用 -z 選項:

按照約定俗成,使用 gzip 來壓縮的 tar 檔案具有 .tgz 擴充名。

這個指令建立歸檔檔案 filename.tar,然後把它壓縮為 filename.tgz 檔案(檔案 filename.tar 不被保留)。如果你使用 gunzip 指令來給 filename.tgz 檔案解壓,filename.tgz 檔案會被删除,并被替換為 filename.tar。

你可以用單個指令來擴充 gzip tar 檔案:

tar -xzvf filename.tgz
           

繼續閱讀