zip/unzip 是跨平台相容性最好的壓縮格式,支援加密、分卷、保留權限、UTF-8 檔名。本文詳解雙向參數、六大實戰場景、中文編碼坑與避坑指南。
| 參數 | 功能 |
|---|---|
-r | 遞歸壓縮目錄樹 |
-d | 從壓縮包刪除指定檔案 |
-i LIST | 只壓縮清單內檔案 |
-x LIST | 排除清單內檔案 |
-u | 更新模式(新增/覆蓋較新檔) |
-m | 移動模式(壓縮後刪除原檔) |
-F | 嘗試修復損壞壓縮包 |
-T | 測試壓縮包完整性 |
-NUM | 壓縮等級 1(快)-9(小),預設 6 |
-e | 加密(提示輸入密碼) |
-P PASS | 指定密碼(不安全,明文顯示) |
-s SIZE | 分卷大小(如 -s 100m) |
-y | 保留符號連結(而非跟隨複製目標) |
| 參數 | 功能 |
|---|---|
-x LIST | 解壓時排除清單內檔案 |
-t | 測試完整性,不解壓 |
-v | 查看詳細資訊(大小、壓縮比、CRC) |
-n | 不覆蓋既有檔案 |
-o | 強制覆蓋,不提示 |
-d DIR | 指定解壓目標目錄 |
-P PASS | 指定密碼解密 |
-l | 列表模式(不解壓) |
-Z | 顯示壓縮包註解 |
-O CP | 指定檔名編碼(如 CP936/GBK) |
-I CP | 指定輸入編碼(舊版相容) |
/etczip -9r /opt/etc.zip /etc
/varzip -r /opt/var.zip /var -x "*.log"
zip /opt/etc.zip -d etc/passwd
# deleting: etc/passwd
# 單檔更新
zip -u /opt/etc.zip /etc/inittab
# 整目錄更新(等同 -ru)
zip -u /opt/etc.zip /etc/*
# 或
zip -ru /opt/etc.zip /etc
unzip -o /opt/etc.zip -x etc/inittab -d /etc
# -o 強制覆蓋 -x 排除 -d 目標目錄
zip -r -e -s 500m /backup/home.zip /home
# -e 加密 -s 500m 分卷 生成 home.z01, home.z02, home.zip
# 解壓只需 unzip home.zip
現象:Windows 建立的 zip 檔在 Linux 解壓出現亂碼;Linux 壓縮的 zip 在 Windows 解壓亂碼。
根因:舊版 zip 使用本地編碼(CP936/GBK/Big5),新版支援 UTF-8(需 -UN 參數),但跨平台相容仍有缺口。
解法:
unzip -O CP936 file.zip(指定輸入編碼)zip -r -UN utf8 file.zip dir(強制 UTF-8,Win 7+ 原生支援)7z(7z a -tzip -mem=AES256 -pPASS file.zip dir),完美支援 UTF-8、AES-256 加密、分卷、大檔案。zip 是「通用壓縮貨幣」,7z 是「現代壓縮王者」。日常跨平台交換用 zip -UN utf8;備份加密分卷用 7z;遇到編碼問題優先嘗試 unzip -O CP936。掌握 -r -x -u -o -d -s -e 八大核心參數組合,應對所有壓縮解壓需求。