HOWTO · Linux

如何在 Linux 中解壓 .gz 檔案

了解如何使用 gunzip、gzip -d 和 tar 在 Linux 中解壓 .gz 檔案或提取 .tar.gz 封存檔,並選擇是否保留壓縮的原始檔案。

本頁內容

要在 Linux 中解壓獨立的 .gz 檔案,請使用 gunzip filename.gz 或 gzip -d filename.gz。要解開 .tar.gz 封存檔,請使用 tar -xzf filename.tar.gz。預設情況下,解壓會刪除壓縮的輸入檔案;如果要保留它,請加上 -k。

了解 .gz 和 .tar.gz 檔案

.gz 檔案是使用 gzip 壓縮的單一檔案;該副檔名並不表示它包含一組檔案。.tar.gz 檔案是先打包成 tar 封存檔、再用 gzip 壓縮的檔案,因此它可以包含多個檔案和目錄。對於獨立的 .gz 檔案,使用 gunzip 或 gzip -d;要提取 .tar.gz 封存檔,則使用 tar。

使用 gunzip 解壓 .gz 檔案

執行 gunzip report.txt.gz 可在目前目錄中解壓該檔案。解壓成功後,結果為 report.txt,而 report.txt.gz 將被刪除。要保留壓縮副本,請加上 -k,例如 gunzip -k report.txt.gz。

這個自包含的範例會建立一個範例檔案,將其壓縮,在保留壓縮副本的同時將其解壓,並印出還原後的內容:

tmpdir=$(mktemp -d)
trap 'rm -rf "$tmpdir"' EXIT
cd "$tmpdir"
printf 'Linux notes\n' > notes
gzip notes
gunzip -k notes.gz
cat notes
Linux notes

使用 gzip -d 解壓 .gz 檔案

-d 選項指示 gzip 進行解壓,因此 gzip -d report.txt.gz 執行與 gunzip report.txt.gz 相同的基本工作。它會將 report.txt 寫到輸入檔案旁邊,並且在解壓成功後通常會刪除 report.txt.gz。使用 gzip -dk report.txt.gz 可保留兩個檔案。根據哪個名稱更容易記住來選擇任一命令;兩者都處理單一 gzip 壓縮檔案。

使用 tar 提取 .tar.gz 封存檔

使用 tar -xzf project.tar.gz 提取用 gzip 壓縮的封存檔。這些選項的含義是:-x 表示提取,-z 處理 gzip 壓縮,-f 指定封存檔。預設情況下,tar 會將封存檔中的路徑寫到目前工作目錄下,因此請在希望建立這些路徑的目錄中執行該命令。要選擇其他目標位置,請加上 -C /path/to/destination,例如 tar -xzf project.tar.gz -C /tmp/project。

.tar.gz 封存檔和獨立的 .gz 檔案需要不同的命令:tar 讀取封存層並還原其中的成員檔案,而 gunzip 將一個 gzip 資料流解壓為一個檔案。所示命令不會列出提取的路徑;如果希望 tar 在提取時印出成員名稱,請使用其詳細選項 -v。

使用 gzip 壓縮檔案

要壓縮檔案,請執行 gzip report.txt。這會建立 report.txt.gz,並通常刪除原始的 report.txt。加上 -k,例如 gzip -k report.txt,可同時保留來源檔案和壓縮檔案。Gzip 會分別壓縮每個指定的檔案;當你需要將多個路徑打包到一個封存檔中時,請先使用 tar,然後壓縮該封存檔以建立 .tar.gz 檔案。