Linux 超簡單壓縮與解壓縮指令筆記

這裡整理常見的 Linux 壓縮格式與指令。不同壓縮格式有不一樣的特性:

  • .tar - 僅打包多個檔案,無壓縮功能。適合用於保留檔案權限、時戳等資訊
  • .gz - 壓縮比適中,壓縮/解壓速度快。適合單一大檔案的快速壓縮
  • .tar.gz - 結合 tar 打包與 gzip 壓縮,是 Linux 最常見的壓縮格式。常用於軟體發布
  • .tar.xz - 採用 LZMA2 演算法,提供較高壓縮比但耗時較長。適合需要節省空間的發布場景
  • .7z - 支援多種壓縮演算法,提供高壓縮比與加密功能。適合需要加密或極致壓縮的場景
  • .zip - 通用性高,所有作業系統都支援。適合需要跨平台分享的檔案

以下整理各種壓縮格式的常用指令與進階用法。

.tar

單純打包,沒有壓縮功能。

基本用法

  • 壓縮:
1
2
3
4
tar cvf file.tar folder
# c: create 建立壓縮檔
# v: verbose 顯示處理過程
# f: file 指定壓縮檔名
  • 解壓縮:
1
2
3
4
tar xvf file.tar
# x: extract 解壓縮
# v: verbose 顯示處理過程
# f: file 指定壓縮檔名

進階用法

  • 檢視內容不解壓:
1
2
tar tvf file.tar
# t: list 列出內容
  • 解壓到指定目錄:
1
2
tar xvf file.tar -C /path/to/directory
# C: directory 指定目標目錄
  • 排除特定檔案:
1
tar cvf file.tar folder --exclude="*.tmp"

.gz

單檔壓縮格式,常與 tar 搭配使用。

基本用法

  • 壓縮:
1
2
gzip file
# 會產生 file.gz 並刪除原檔案
  • 解壓縮:
1
2
3
gzip -d file.gz
# d: decompress 解壓縮
# 或使用 gunzip file.gz

進階用法

  • 保留原檔案:
1
2
gzip -c file > file.gz
# c: stdout 輸出到標準輸出
  • 指定壓縮等級:
1
2
gzip -9 file
# 1-9,預設為 6,數字越大壓縮比越高但較慢

.tar.gz

最常見的 Linux 壓縮格式,結合了 tar 打包與 gzip 壓縮。

基本用法

  • 壓縮:
1
2
tar zcvf file.tar.gz folder
# z: gzip 使用 gzip 壓縮
  • 解壓縮:
1
tar zxvf file.tar.gz

進階用法

  • 檢視內容:
1
tar ztvf file.tar.gz
  • 解壓特定檔案:
1
tar zxvf file.tar.gz file1 file2

.tar.xz

提供較高壓縮比的格式。

基本用法

  • 壓縮:
1
2
tar Jcvf file.tar.xz folder
# J: xz 使用 xz 壓縮
  • 解壓縮:
1
tar Jxvf file.tar.xz

進階用法

  • 指定壓縮等級:
1
XZ_OPT=-9 tar Jcvf file.tar.xz folder

.7z

提供高壓縮比與加密功能。

基本用法

  • 壓縮:
1
2
7z a file.7z folder
# a: add 新增檔案到壓縮檔
  • 解壓縮:
1
2
7z x file.7z
# x: extract with full paths 保留完整路徑解壓縮

進階用法

  • 加密:
1
2
7z a -p"password" file.7z folder
# p: password 設定密碼
  • 測試完整性:
1
2
7z t file.7z
# t: test 測試壓縮檔完整性

.zip

通用性最高的壓縮格式。

基本用法

  • 壓縮:
1
2
zip -r file.zip folder
# r: recursive 遞迴處理目錄
  • 解壓縮:
1
unzip file.zip

進階用法

  • 加密:
1
2
zip -e -r file.zip folder
# e: encrypt 加密
  • 保留權限:
1
zip -r --preserve-permissions file.zip folder

常見問題處理

1. 檔案權限問題

  • 解壓縮時出現權限錯誤:
1
2
3
4
5
# 使用 sudo
sudo tar xvf file.tar

# 或先修改檔案權限
chmod 644 file.tar

2. 中文檔名亂碼

  • zip 檔案中文亂碼:
1
2
unzip -O CP936 file.zip  # 如果是簡體中文
unzip -O BIG5 file.zip # 如果是繁體中文

3. 空間不足

  • 檢查壓縮前後大小:
1
2
du -sh folder        # 檢查來源大小
du -sh file.tar.gz # 檢查壓縮檔大小

4. 檢查壓縮檔完整性

1
2
3
4
5
6
7
8
# tar 檔案
tar tvf file.tar > /dev/null

# zip 檔案
unzip -t file.zip

# 7z 檔案
7z t file.7z

格式比較

格式壓縮比速度跨平台加密常見用途
.tar無壓縮×純打包
.gz×單檔壓縮
.tar.gz×Linux 軟體發布
.tar.xz×Linux 軟體發布
.7z檔案備份、加密
.zip跨平台分享

參考資料

  • GNU tar 手冊:https://www.gnu.org/software/tar/manual/
  • 7-Zip 官方文件:https://www.7-zip.org/
  • Info-ZIP 文件:http://infozip.sourceforge.net/

也許你也會想看看