14.3. 檔案壓縮與歸檔備份

有時候儲存一組檔案到一個檔案是很有用的,如此便可以備份那些檔案,並很容易的轉存至另一個目錄,或甚至轉存至另一部電腦。 有時壓縮一組檔案成為一個檔案也很有用,如此它們佔用較少的磁碟空間以及可以更快的透過網際網路被下載。

了解在一個 『歸檔備份檔案』 與一個 『壓縮檔案』 之間的關係與不同點是很重要的。 一個歸檔備份檔案是儲存在一個檔案中的檔案與目錄之集合。 歸檔備份檔案並沒有經過壓縮 — 它使用與結合所有個別檔案與目錄相同的磁碟空間。 一個壓縮檔案就是儲存在一個檔案中的檔案與目錄之集合,並且 以使用比結合所有個別檔案與目錄較少磁碟空間的方式來儲存。 假如您的電腦沒有足夠的磁碟空間,您可以壓縮沒有經常使用的檔案,或那些不再使用而您想儲存的檔案。 您甚至可以建立一個歸檔備份檔案,然後再壓縮它以節省磁碟空間。

注請注意
 

一個歸檔備份檔案是沒有經過壓縮的,而一個壓縮檔案也可以是一個歸檔備份檔案。

14.3.1. 使用 File Roller

Red Hat Linux 包含一個稱為 File Roller 的圖形工具,它可以用來壓縮、解壓縮以及歸檔備份檔案與目錄。 File Roller 支援一般的 UNIX 與 Linux 檔案壓縮與 archiving 的格式,並且還有一個簡單的介面與廣泛的輔助說明文件(假如您需要的話)。它也被整合到桌面環境與圖形檔案管理員,使得可以很容易的建立歸檔檔案。

如要啟動 File Roller ,請選擇 『主選單』 => 『輔助程式』 => File Roller。 您也可以從 shell 提示符號下輸入 file-roller 指令來啟動 File Roller圖形 14-1 顯示出使用中的 File Roller

提示建議
 

假如您使用檔案管理員 (例如 Nautilus),您只要雙點選您想要 unarchive 或解壓縮的檔案來啟動 File Roller。 將會出現 File Roller 的瀏覽視窗,並含有要解壓縮或 unarchived 的檔案在一個資料夾中讓您擷取或瀏覽。

圖形 14-1. 使用中的 File Roller

14.3.1.1. 使用 File Roller 解壓縮與 Unarchiving

如要 unarchive 亦或解壓縮一個檔案,請點選工具列上的 開啟 按鈕。 會跳出一個檔案選單,讓您選擇您想要使用的歸檔檔案。 例如,假如您有一個稱為 foo.tar.gz 的檔案在您的家目錄,請反白選取該檔案並按下 確定。 這個檔案會以資料夾的型態出現在主要的 File Roller 瀏覽視窗,在此您可以藉由雙點選該資料夾圖示來操作。 File Roller 會保留所有的目錄與子目錄的層次架構,這讓您在歸檔中尋找一個特定的檔案時將很方便。 您可以藉由點選 解壓縮 的按鈕來取出個別的檔案或整個歸檔,再選擇您想要用來儲存所取出檔案的目錄,然後再按下 確定

14.3.1.2. 使用 File Roller 建立歸檔檔案

假如您要釋放一些硬碟空間,或要透過電子郵件傳送許多檔案或一整個目錄的檔案到另一個使用者。 File Roller 使您可以建立您檔案與目錄的歸檔。 如要建立一個新的歸檔,請點選工具列上的 新增 按鈕。 將會跳出一個檔案瀏覽器,讓您指定一個歸檔的名稱以及壓縮的技術。 例如您可以從下拉式的選單中選擇一個 『使用 gzip 的 tar 壓縮 (tar.gz)』 格式,然後再輸入您想要建立之歸檔檔案的檔名。 點選 確定 後,這個新的歸檔檔案就可以開始放入檔案與目錄了,如要增加檔案到這個新的歸檔檔案,請點選 新增 按鈕,然後將會跳出一個瀏覽視窗 (圖形 14-2),在這裡您可以瀏覽以找出您想要放入歸檔的檔案或目錄。 當您完成後,請點選 確定,並且按下 關閉 來關閉這個歸檔。

圖形 14-2. 使用 File Roller 建立一個歸檔檔案

提示建議
 

除了在這裡所描述的之外,File Roller 還可以用來做很多事。 如需更多資訊,請參考 File Roller 的說明手冊(可經由點選 『說明』 => 『說明手冊』 取得)。

14.3.2. 在 shell 提示符號下壓縮檔案

壓縮檔案使用較少的磁碟空間,而且比大的且未壓縮的檔案下載更快。 在 Red Hat Linux 中,您可以使用 gzip, bzip2zip 等工具來壓縮檔案。

在此建議您使用 bzip2 壓縮工具,因為它提供了最大的壓縮,而且可在大部分 UNIX 類型的作業系統上找到。 gzip 壓縮工具也可在大部分 UNIX 類型的作業系統上找到。 假如您需要在 Linux 與其他作業系統(例如 MS Windows)之間傳輸檔案,您應該要使用 zip,因為它較相容於 Windows 上的壓縮工具程式。

壓縮工具檔案副檔名解壓縮工具
gzip.gzgunzip
bzip2.bz2bunzip2
zip.zipunzip

表格 14-1. 壓縮工具

依照慣例,使用 gzip 壓縮的檔案會給予副檔名 .gz,使用 bzip2 壓縮的檔案會給予副檔名 .bz2,而使用 zip 壓縮的檔案會給予副檔名 .zip

使用 gzip 壓縮的檔案需要使用 gunzip 來解壓縮,使用 bzip2 壓縮的檔案需要使用 bunzip2 來解壓縮,而使用 zip 壓縮的檔案需要使用 unzip 來解壓縮。

14.3.2.1. Bzip2 與 Bunzip2

要使用 bzip2 來壓縮一個檔案,請在 shell 提示符號下輸入如下的指令:

bzip2 filename

這個檔案將會被壓縮並儲存為 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 bzip2man bunzip2 來閱讀 bzip2bunzip2 的 man pages。

14.3.2.2. Gzip 與 Gunzip

要使用 gzip 來壓縮一個檔案, 請在 shell 提示符號下輸入如下的指令:

gzip filename

這個檔案將會被壓縮並儲存為 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 gzipman gunzip 來閱讀 gzipgunzip 的 man pages。

14.3.2.3. Zip 與 Unzip

要使用 zip 來壓縮一個檔案,請輸入如下的指令:

zip -r filename.zip filesdir

在這個例子中,filename.zip 代表您要建立的檔案, 而 filesdir 代表您想要加入這個新的 zip 檔案的目錄。 這個 -r 的參數表示您想要 遞迴的 包含在 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 zipman unzip 來閱讀 zipunzip 的 man pages。

14.3.3. 在 Shell 提示符號下歸檔檔案

一個 tar 檔案是由許多檔案亦或目錄集合成的一個檔案。 這是一個用來建立資料備份與歸檔文件的好方法。

一些 tar 所使用的參數為:

如要建立一個 tar 檔案,請輸入:

tar -cvf filename.tar directory/file

在這個例子中,filename.tar 代表您正要建立的檔案,而 directory/file 代表您要放入到歸檔文件的目錄與檔案。

您可以同時 tar 多重的檔案與目錄, 只要將它們以空白分隔的方式列出即可:

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

以上的指令會放置 /home/mine 的子目錄 workschool 中的所有檔案到目前目錄中的一個新的檔案稱為 filename.tar

要列出一個 tar 檔案的內容,請輸入:

tar -tvf filename.tar

要解開一個 tar 檔案的內容,請輸入:

tar -xvf filename.tar

這個指令並沒有移除這個 tar 檔案,不過它放置其解開後的內容在目前的工作目錄中,並保留這個歸檔檔案所使用的目錄架構。 假如這個 tar 的檔案包含一個稱為 bar.txt 的檔案在 foo/ 目錄中,因此解開的結果將會在您目前的工作目錄建立一個稱為 foo/ 的目錄且其中含有一個 bar.txt 的檔案。

記得,這個 tar 指令並沒有預設壓縮檔案。 要建立一個 tarred 以及 bzipped 壓縮的檔案,請使用 -j 參數:

tar -cjvf filename.tbz file

使用 bzip2 壓縮的 tar 檔案將會按照慣例的給予副檔名 .tbz; 然而有時候使用者會使用 tar.bz2 副檔名來命名他們的歸檔檔案。

這個指令建立一個歸檔文件,然後再壓縮它成為檔案 filename.tbz。 假如您使用 bunzip2 指令來解壓縮 filename.tbz 檔案,filename.tbz 檔案會被移除,並且以 filename.tar 檔案取代之。

您也可以使用一行指令展開與 unarchive 一個 bzip tar 的檔案:

tar -xjvf filename.tbz

建立一個 tarred 以及 gunzipped 的壓縮檔,請使用 -z 參數:

tar -czvf filename.tgz file

使用 gzip 壓縮的 tar 檔案將會按照慣例的給予副檔名 .tgz

這行指令建立歸檔文件 filename.tar,然後再壓縮它為 filename.tgz 檔案。 (這個 filename.tar 檔案沒有被儲存。) 假如您使用 gunzip 指令解壓縮 filename.tgz 檔案, filename.tgz 檔案會被移除,並且以 filename.tar 檔案取代之。

您也可以使用一行指令展開與 unarchive 一個 gzip tar 的檔案:

tar -xzvf filename.tgz

提示建議
 

輸入 man tar 指令以取得更多關於 tar 指令的相關資訊。