執行 tar -zxvf file.tar.gz 時出現 gzip: stdin: not in gzip format,實則是「文件實際格式與副名不符」的經典問題。本文從原理到實戰,教你 10 秒判斷真實格式並正確解壓。

.tar.gz 暗示「tar 打包 + gzip 壓縮」,但實際可能是:
.tar 未壓縮.tar.xz / .tar.bz2 / .tar.zst 其他壓縮算法.zip、.7z 偽裝file 鑑定,再對症下藥file suspicious.tar.gz
# 輸出示例:
# suspicious.tar.gz: POSIX tar archive → 純 tar,無壓縮
# suspicious.tar.gz: XZ compressed data → 實為 .tar.xz
# suspicious.tar.gz: gzip compressed data → 真 .tar.gz
file 輸出關鍵字 | 實際格式 | 正確解壓命令 |
|---|---|---|
| POSIX tar archive | .tar | tar -xvf file.tar.gz(去掉 -z) |
| gzip compressed data | .tar.gz | tar -zxvf file.tar.gz |
| bzip2 compressed data | .tar.bz2 | tar -jxvf file.tar.gz |
| XZ compressed data | .tar.xz | tar -Jxvf file.tar.gz |
| Zstandard | .tar.zst | tar --zstd -xvf file.tar.gz |
| Zip archive | .zip | unzip file.tar.gz |
現代 tar (GNU tar 1.15+) 支援 -a / --auto-compress 根據文件魔數自動選擇解壓算法:
tar -axvf file.tar.gz # 一鍵解決所有上述格式,強烈推薦養成習慣
mv file.tar.gz file.tar # 去掉 .gz 後綴
tar -xvf file.tar # 按純 tar 解壓
缺點: 依賴人工判斷,遇到 .xz/.bz2 仍會失敗;不如file+tar -a組合科學可靠。
# 遠端下載並直接解壓,不落地壓縮包
curl -sL https://example.com/data.tar.xz | tar -Jxvf -
# 解壓單個文件到標準輸出
tar -axvf archive.tar.gz --to-stdout path/to/file.txt
拒絕盲目加參數,拥抱 file 鑑定 + tar -a 自動化。 這不僅能解決 .tar.gz 偽裝問題,更能統一處理 .tar.xz、.tar.zst 等現代壓縮格式,是 Linux 運維必備的肌肉記憶。
Linux 安裝 Jira 完整指南:JDK + MySQL + Tomcat 三步走
Linux Firefox 安裝 Flash Player 替代方案:Fresh Player Plugin 完整設定
Logrotate 日誌輪轉完整配置指南:原理、參數、Nginx 實戰案例
Linux bunzip2 指令使用教學:.bz2 壓縮檔解壓縮參數完整說明
Linux 修改 /etc/profile 環境變量配置文件的正確姿勢
Linux XF86Setup 指令詳細解析:XFree86 圖形化配置工具語法與參數
Linux 批量轉換文件編碼:iconv 遞歸腳本與現代工具對比
Ubuntu 10.10 安裝 GNU Fortran 77 (g77) 編譯器:舊版相容性需求下的 apt 源擴展與 aptitude 解決相依