如何解壓縮.tar.gz檔案(適用於 Linux 和 Windows)

如何解壓縮.tar.gz檔案

如何解壓縮 .tar.gz 檔案(適用於 Linux 和 Windows)從視訊到整個軟體包,許多檔案都使用 .tar.gz 格式壓縮和儲存。雖然解壓縮 .tar.gz 檔案並不像解壓 .zip 檔案那麼容易,但仍然非常簡單。

隨著軟體功能越來越強大,媒體資料越來越豐富,檔案大小繼續以指數速度增長。因此,以 .tar.gz 壓縮格式儲存和傳送檔案變得越來越普遍。

然而,壓縮和提取這些檔案並不總是那麼直觀。在本指南中,我們將提供在 Linux 和 Windows 中解壓縮 .tar.gz 檔案的基本指南,以及一些有用的提示和技巧。

什麼是 .tar 和 .tar.gz 檔案?

.tar 檔案是壓縮成單個檔案或歸檔檔案的檔案集合。TAR “是 “Tape ARchive” 的縮寫,是對磁帶驅動器儲存檔案時代的回溯。

值得慶幸的是,你不需要成為 1960 年代的電腦技術員就能使用和提取 .tar 檔案,現代的 .tar 檔案甚至與舊電腦沒有任何關係。

就像人們更熟悉的 .zip 檔案一樣,.tar 檔案也能將大檔案壓縮成一個單獨的檔案包,從而更容易通過電子郵件、伺服器等方式儲存和傳送這些檔案。因此,它已成為許多開源軟體包和其他資源的常用副檔名。

既然.zip 和.tar 都更容易使用,那為什麼還要使用.tar 呢?我們將在下一節中看到,.tar 具有一些額外的功能,使其成為某些檔案和應用程式的更好壓縮格式。

.tar vs .zip

大多數作業系統都能輕鬆解壓和建立 .zip 檔案,但 .tar 檔案卻並非如此–至少不容易注意到。

當然,這並不是說 .tar 檔案比 .zip 格式 “次”。相反,它們都以相同的方式完成相同的任務(檔案壓縮)。下面我們就來看看它們是如何工作的。

  • .tar 檔案未壓縮檔案的集合,有時也稱為 tar 包。由於 .tar 並不壓縮任何東西,因此它需要一個單獨的壓縮工具來進行壓縮。正如我們稍後將看到的,一種常用的壓縮工具是 gzip,它能將 .tar 壓縮成 .tar.gz 檔案。
  • zip 檔案壓縮檔案的集合。與使用單獨的壓縮工具來壓縮整個檔案集不同,.zip 會自動壓縮檔案集中的每個檔案。

現在,你可能已經注意到 .tar 和 .zip 檔案的主要區別:壓縮方法。

.zip 檔案由許多單獨壓縮的檔案組成,而 .tar 檔案是作為一個單獨的壓縮包壓縮的,其檔案未經壓縮。換句話說,.zip 檔案是壓縮檔案的集合,而 .tar 檔案是壓縮檔案的集合。

但壓縮方法真的重要嗎,尤其是如果兩種方法在技術上都能生成壓縮檔案?

這要看情況。在傳送和儲存方面,.zip 和 .tar.gz 檔案都能讓你以單個檔案的形式傳送相對較大的軟體包。不過,在訪問檔案中的資料和壓縮效率方面,兩者還是有很大區別的。

  • .zip 檔案更容易訪問。由於 .zip 檔案中的資料是單獨壓縮的,因此也可以單獨訪問。相比之下,.tar.gz 檔案中的資料只有在解壓縮整個檔案後才能訪問。
  • .tar.gz 檔案更節省空間。由於 .tar 檔案是作為單個實體而不是一組單獨壓縮的檔案進行壓縮的,因此壓縮實用程式可以將檔案之間的相似性進行分組,從而減少空間。換句話說,將檔案壓縮為一個單獨的組,可以採用更有效的壓縮方法,從而節省空間並減小檔案的整體大小。

如果還不太明白,也不用擔心。拋開技術細節不談,你只需要記住,.zip 檔案更易於訪問,但空間效率較低;而.tar 檔案更易於訪問,但空間效率較高。因此,一個並不一定比另一個好,關鍵在於應用。

.tar 和 .tar.gz 檔案有什麼區別?

雖然 .tar 和 .tar.gz 都指檔案歸檔,但 .tar.gz 檔案是使用 gzip 工具壓縮或 “壓縮 “的 .tar 檔案。使用 gzip 壓縮後,檔案的字尾名就變成了”.gz”。

雖然 gzip 是最常用的壓縮工具,但它並不是唯一的壓縮工具。如你所想,在 .tar 檔案上使用不同的壓縮工具會產生不同的雙副檔名。一些常見的例子包括 .tar.bz2 (bzip2)、.tar.br (Brotli) 和 .tar.zst (zstd),等等。

正如我們稍後將看到的,不同的壓縮工具可能需要不同的方法來解壓和解壓縮檔案。雖然我們將主要關注 .tar.gz 檔案,但請檢視文章末尾有關解壓縮其他格式 .tar 檔案的一些快速提示。

否則,請繼續閱讀,瞭解如何在 Linux、macOS 和 Windows 中解壓縮 .tar.gz 檔案。

如何在 Linux 終端解壓縮 .tar.gz 檔案?

大多數 Linux 發行版和 macOS 都包含用於壓縮和解壓縮 .tar 和 .tar.gz 檔案的內建工具。雖然 tar 實用程式足以滿足大多數用途,但你需要使用 gzip 實用程式來建立 .tar.gz 檔案。

在 Linux 中解壓縮 .tar.gz 檔案

你可以使用 tar 工具解壓縮大多數 .tar.gz 和其他壓縮 .tar 檔案。

最簡單的方法是開啟終端(CTRL+ALT+T)並導航到要解壓縮的 .tar.gz 檔案的目錄。然後輸入以下命令:

將 .tar.gz 檔案解壓縮到當前工作目錄:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar -xf filename.tar.gz
tar -xf filename.tar.gz
 tar -xf filename.tar.gz

該命令將解壓縮 ( -x ) 指定的檔案 ( -f ) (本例中為 filename.tar.gz)到當前目錄。請注意,該命令也適用於其他常見的壓縮格式,如 .tar.bz2。

tar 命令還有其他幾個選項。與許多 Linux 命令一樣,其中一個選項是 verbose output ( -v ),可將解壓縮後的檔案列印到終端視窗:

將 .tar.gz 檔案解壓縮到當前工作目錄並列印輸出:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar -xvf filename.tar.gz
tar -xvf filename.tar.gz
tar -xvf filename.tar.gz

同樣,上述命令預設將解壓縮到當前工作目錄。你可以使用 -C 選項解壓縮到不同的目錄(本例中為 /home/user/files)。

將 .tar.gz 檔案解壓縮到不同的工作目錄:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar -xf filename.tar.gz -C /home/user/files
tar -xf filename.tar.gz -C /home/user/files
tar -xf filename.tar.gz -C /home/user/files

在 Linux 中僅從 .tar.gz 檔案中提取特定檔案或目錄

tar 命令還支援只從 .tar.gz 檔案中提取特定檔案或目錄。只需新增一個空格分隔的列表,列出你要提取的檔案。

從 .tar.gz 檔案中提取 file1 和 directory1 到當前工作目錄:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar -xf filename.tar.gz file1 directory1
tar -xf filename.tar.gz file1 directory1
tar -xf filename.tar.gz file1 directory1

請注意,除非指定 .tar 檔案中列出的確切檔名,否則該命令會出錯。正如我們將在下一節詳細介紹的那樣,你可以使用 tar -tf filename.tar.gz 命令列出內容來驗證檔名。

你還可以使用 --wildcards 命令來提取具有特定副檔名或名稱的所有檔案。

從 .tar.gz 檔案中提取所有以 “.txt” 結尾的檔案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar -xf filename.tar.gz --wildcards '*.txt'
tar -xf filename.tar.gz --wildcards '*.txt'
tar -xf filename.tar.gz --wildcards '*.txt'

在 Linux 中從 stdin 解壓縮 .tar.gz

您也可以直接從標準輸入流 (stdin) 中解壓縮 .tar.gz 檔案,方法是使用解壓縮選項 ( -z ) 將其匯入 tar 命令。

例如,如果你想提取位於 ” https://www.wbolt.com/filename.tar.gz” 的 .tar.gz 檔案(這裡實際上並沒有 .tar.gz 檔案,但請耐心等待),你可以使用 wget 命令,並將其匯入 tar 命令。

從 URL 提取 .tar.gz 檔案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wget -c https://kinsta.com/filename.tar.gz -O - | sudo tar -xz
wget -c https://kinsta.com/filename.tar.gz -O - | sudo tar -xz
wget -c https://kinsta.com/filename.tar.gz -O - | sudo tar -xz

在 Linux 中列出 .tar.gz 檔案的內容

列出 .tar.gz 檔案的內容通常很有用,而不必解壓縮整個壓縮包。 -list ( -t ) 選項將輸出檔名列表。

列出 .tar.gz 檔案的內容:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar -tf filename.tar.gz
tar -tf filename.tar.gz
tar -tf filename.tar.gz

你還可以新增詳細輸出選項 ( -v ),提供詳細列表,包括日期、證券/許可權等。

列出 .tar.gz 檔案的詳細內容:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar -tvf filename.tar.gz
tar -tvf filename.tar.gz
tar -tvf filename.tar.gz

許多壓縮實用程式還提供自己的命令,用於列出壓縮檔案的內容。例如,gzip 允許使用以下命令列出 .gz 檔案的內容:

用 gzip 列出 .gz 檔案的詳細內容:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gzip -l filename
gzip -l filename
gzip -l filename

使用 gzip 在 Linux 中壓縮和解壓縮 .tar 和 .tar.gz 檔案

你可以使用 gzip 等壓縮工具建立自己的 .tar 壓縮檔案。Gzip 是最受歡迎的可用選項之一,尤其是因為它已內建在大多數 Linux 發行版和 macOS 中。

在終端中,導航到要壓縮的 .tar 檔案的工作目錄,然後輸入以下命令即可:

使用 gzip 壓縮 .tar 檔案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gzip filename.tar
gzip filename.tar
gzip filename.tar

使用解壓 ( -d ) 選項解壓 .tar.gz 檔案也同樣簡單。

使用 gzip 解壓 .tar.gz 檔案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gzip -d filename.tar
gzip -d filename.tar
gzip -d filename.tar

如果你想在壓縮後保留原始檔案,有兩個選項。第一個是 -k 選項,另一個是使用 -c 選項將壓縮後的檔案輸出到另一個檔案,保留原始檔案。

壓縮 .tar 檔案並保留原始副本:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gzip -c filename.tar
gzip -c filename.tar
gzip -c filename.tar

壓縮 .tar 檔案並儲存為另一個檔案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gzip -c filename.tar > newfilename.tar.gz
gzip -c filename.tar > newfilename.tar.gz
gzip -c filename.tar > newfilename.tar.gz

tar 工具一樣,gzip 也可以一次壓縮和解壓縮多個檔案或整個目錄。

壓縮多個檔案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gzip file1 file2
gzip file1 file2
gzip file1 file2

解壓多個檔案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gzip -d file1 file2
gzip -d file1 file2
gzip -d file1 file2

壓縮目錄中的所有檔案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gzip -r directory1
gzip -r directory1
gzip -r directory1

解壓縮目錄中的所有檔案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gzip -dr directory1
gzip -dr directory1
gzip -dr directory1

如何在 Windows 10 中解壓縮 .tar.gz 檔案?

與 Linux 和 macOS 一樣,Windows 10 作業系統也內建了 tar 實用程式。

與 Windows 方便的圖形使用者介面 (GUI) 解壓縮 .zip 檔案不同,您需要通過命令列使用 tar 實用程式。不過,你也可以安裝許多第三方工具,以獲得更友好的使用體驗。

使用命令列 (cmd)

要訪問 Windows 命令列,請在搜尋欄中搜尋 “命令提示符” 或 “cmd”。右鍵單擊第一個結果,選擇 “以管理員身份執行” 選項。

在 Windows 10/11 中搜尋 "cmd"

在 Windows 10/11 中搜尋 “cmd” 後出現的命令提示符圖示

開啟命令提示符後,使用適當的命令將當前工作目錄 ( cd ) 更改為要解壓縮的 .tar.gz 檔案的位置。或者,在使用 tar 工具時,也可以指定原始檔和目標檔案路徑。

鍵入以下命令之一併按 “Enter”。

將 .tar.gz 檔案解壓縮到當前工作目錄:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar -xvzf filename.tar.gz
tar -xvzf filename.tar.gz
tar -xvzf filename.tar.gz

將 .tar.gz 檔案從源路徑解壓縮到目標路徑:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar -xvzf C:\PATH\TO\SOURCE\filename.tar.gz -C C:\PATH\TO\DESTINATION
tar -xvzf C:\PATH\TO\SOURCE\filename.tar.gz -C C:\PATH\TO\DESTINATION
tar -xvzf C:\PATH\TO\SOURCE\filename.tar.gz -C C:\PATH\TO\DESTINATION

請注意,Windows 中 tar 工具的語法與 Linux 和 macOS 中的幾乎相同。在這裡,我們使用了提取 ( -x )、verbose ( -v )、使用 gzip ( -z ) 解壓縮和檔案 ( -f ) 選項,以獲得完整的提取、解壓縮和詳細輸出。

使用第三方工具

如果你不喜歡使用命令列,還有很多使用者友好型工具可用於解壓縮 tar.gz 檔案。

使用 7-Zip 將大量檔案壓縮成 .zip 檔案

使用 7-Zip 將大量檔案壓縮成 .zip 檔案

雖然有許多工具可供選擇,但最流行的還是 7-ZipWinZip。雖然它們略有不同,但都非常輕便,是使用命令列之外的另一種更簡單的選擇。

一些第三方工具還提供了檔案型別間轉換的更大靈活性,如果你想在不同壓縮格式間轉換,可以節省更多時間。許多工具還適用於 Linux 和 macOS。

7-Zip 的相容性選項

7-Zip 的相容性選項,包括 .tar 和 .gz。

不過,雖然 7-Zip 等工具是免費的,但許多更 “強大” 的解決方案只有在試用期後才有價格。因此,我們建議堅持使用免費(但值得信賴)的工具或直接使用命令列。

常見錯誤診斷

並非每次 .tar.gz 解壓縮都能天衣無縫,尤其是在使用命令列的情況下!

命令列很少(如果有的話)有錯字或遺漏,許多常見錯誤都是小錯誤、拼寫錯誤或格式不正確造成的。值得慶幸的是,除非你丟失了 targzip 工具,大多數常見錯誤都很容易修復。

tar: README: Not found in archive

嘗試使用 tar 從 .tar.gz 檔案中提取特定檔案或目錄時,會出現此錯誤。

Error Input:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar -xf filename.tar.gz FILE
tar -xf filename.tar.gz FILE
tar -xf filename.tar.gz FILE

Error Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar: FILE: Not found in filename
tar: Exiting with failure status due to previous errors
tar: FILE: Not found in filename tar: Exiting with failure status due to previous errors
tar: FILE: Not found in filename
tar: Exiting with failure status due to previous errors

在本例中,使用者試圖從 filename.tar.gz 中提取名為 “FILE” 的檔案。然而,tar 無法在 .tar.gz 中找到 FILE,這意味著使用者拼錯了檔名,或者 filename.tar.gz 中根本不存在該檔案。另一個常見的錯誤原因是大小寫敏感性,Linux 將 “FILE” 和 “file” 視為兩個獨立的實體。

解決辦法:使用 tar -tf filename.tar.gz 列出內容,檢查拼寫和/或驗證檔案是否存在於 .tar.gz 存檔中。

tar: Archive is compressed. Use -z option

如果嘗試解壓檔案而未指定解壓實用程式,特別是 -z 用於 gzip ,則會出現此錯誤。

Error Input:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wget -c https://www.wbolt.com/filename.tar.gz -O - | sudo tar -x
wget -c https://www.wbolt.com/filename.tar.gz -O - | sudo tar -x
wget -c https://www.wbolt.com/filename.tar.gz -O - | sudo tar -x

請注意,最右邊的 sudo tar -xz 中缺少了” -z “。

Error Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar: Archive is compressed. Use -z option
tar: Error is not recoverable: exiting now
tar: Archive is compressed. Use -z option tar: Error is not recoverable: exiting now
tar: Archive is compressed. Use -z option
tar: Error is not recoverable: exiting now

解決方案:tar 命令中指定解壓縮選項,如 gzip ( -z )。

gzip: stdin: not in gzip format

許多使用者報告說,執行了 “正確” 的命令,卻發現他們的 .tar.gz 檔案 “不是 gzip 格式” – 儘管副檔名為 .gz。

Error Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error exit delayed from previous errors
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors

這種錯誤通常發生在 .tar 檔案被儲存為 .gz 檔案時,儘管該檔案從未使用 gzip 工具壓縮過。這聽起來可能是個愚蠢的錯誤,但在使用者直接重新命名檔案及其副檔名(如 .tar 和 .gz)的過程中,這種錯誤卻非常常見。

解決方法:查詢 .tar.gz 檔案的新副本,或使用 tar -xf filename.tar 將其解壓縮為 .tar 檔案。如果該命令也出錯,下一個解決方案可能會有幫助。

tar: Unrecognized archive format

與前一個錯誤類似,當存檔被儲存為 .tar 格式,而不是 .tar 存檔時,也會出現這個錯誤。

Error Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.
tar: Unrecognized archive format tar: Error exit delayed from previous errors.
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.

解決方案:查詢 .tar 或 .tar.gz 檔案的新副本,或嘗試用 gunzip filename.tar.gz 。如果 gunzip 命令不起作用,可嘗試用 tar -xvf filename.tar.gz 命令的冗餘輸出列出內容,看看是否有特定檔案導致了問題。不過,更有可能的情況是,檔案一開始就沒有正確壓縮成 .tar 檔案。

常見問題

在瀏覽 .tar、.tar.gz 和 .gz 檔案時很容易混淆,更不用說壓縮和解壓縮了。以下是我們在處理 .tar.gz 檔案時經常聽到的幾個常見問題。

如何開啟 .tar.gz 檔案?

您可以使用 Linux、macOS 和 Windows 10 內建的 tar 命令開啟大多數 .tar.gz 檔案。如果你不習慣使用終端或命令列,第三方工具(如 7-Zip)提供了更方便使用者使用的替代方法。

.gz 是 .tar 檔案嗎?

雖然每個 tar.gz 檔案都是 .tar 壓縮包,但並非每個 .gz 檔案都是 .tar 檔案。.gz 副檔名代表 gzip 壓縮格式,幾乎可用於任何檔案格式,以壓縮資料並節省空間。

.tar.gz 和 .zip 一樣嗎?

雖然 .zip 和 .tar.gz 都能歸檔和壓縮檔案,但它們的方式不同。.zip 歸檔和壓縮單個檔案,而 .tar 只歸檔單個檔案,讓 .gz (gzip) 等單獨的壓縮格式將所有檔案壓縮為單個檔案/歸檔檔案。換句話說,.zip 是壓縮檔案的集合,而 .tar.gz 是壓縮檔案的集合。

.tar.gz 比 .zip 更高效嗎?

是的。由於 .tar.gz 一次壓縮多個檔案,它可以利用單個檔案之間的相似性來節省空間。一般來說,歸檔並壓縮為 .tar.gz 的檔案集比壓縮為 .zip 的檔案集更節省空間(即更小)。

小結

隨著 Linux、macOS 和 Windows 10 提供內建 tar 工具,通過命令列解壓縮 tar.gz 檔案比以往任何時候都要簡單。通常,你唯一需要的命令是

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar -xvzf filename.tar.gz
tar -xvzf filename.tar.gz
tar -xvzf filename.tar.gz

與許多歸檔和壓縮格式一樣,.tar.gz 是節省儲存空間和方便傳送大量資料的有效方法。

評論留言