壓縮檔工具
打包檔案這件事,本來就不需要伺服器。
1 個工具
這個分類裡的工具
壓縮檔是所有檔案操作裡「把資料送去伺服器」最難被合理化的一種。把十個檔案裝進一個容器不涉及任何分析、任何轉換 —— 那純粹是檔案記帳,而瀏覽器全部做得到。這一頁講目前有什麼,以及 ZIP 最容易讓人踩坑的四件事。
ZIP 是什麼,以及它為什麼活得比別人久
ZIP 由 PKWARE 在 1989 年發表,之後改動少得驚人。它的壓縮方法 deflate 當年刻意不設專利限制,這就是為什麼它最後跑進 PNG、HTTP 回應、PDF 與無數其他格式裡,而不是停在一個產品功能。
那個決定就是 ZIP 今天成為預設值的全部理由。Windows 檔案總管、macOS Finder、iOS 的「檔案」App、Android 的檔案管理員、每一種 Linux 桌面、每一種程式語言,都能在不安裝任何東西的情況下讀 ZIP。壓縮率更好的格式一直存在,而且存在了幾十年;沒有一個能講出這句話。
所以要把檔案寄給一個你不知道他電腦裡有什麼的人,實務原則很單純:用 ZIP。你損失幾個百分點的壓縮率,換到「對方一定打得開」這件確定性。
不裝任何軟體怎麼打開 ZIP
搜「線上解壓縮」的人遠多於真正需要它的人,所以先講誠實的答案。Windows:在檔案上按右鍵選「解壓縮全部」—— 這個功能從 Windows XP 就內建了。macOS:直接雙擊,內建的「封存工具程式」會把它解在原檔旁邊。iOS:在「檔案」App 裡點一下。Android:大多數內建檔案管理員都處理得了,Google Files 也可以。
線上解壓縮工具值得動用的情況有兩種:壓縮檔在一台你無法安裝軟體、而內建功能又失敗的機器上;或者壓縮檔用了作業系統不支援的東西 —— 7z、RAR,或使用 AES 加密的 ZIP。在遠遠更常見的「一個普通 ZIP」的情況下,把它上傳到某個地方,比用你裝置上原本就有的工具更慢、也更不隱私。
如果雙擊之後出現錯誤,常見原因是:下載不完整(把檔案大小跟來源比對一下)、那個檔案其實是被改成 .zip 副檔名的 7z 或 RAR,或者它是一個有密碼、而你沒拿到密碼的壓縮檔。
ZIP、7z、RAR、tar.gz 該怎麼選
任何要離開你掌控範圍的東西用 ZIP。相容性最高、壓縮率夠用、兩端都不需要裝軟體。
壓縮率真的有差的時候用 7z —— 大量文字資料、磁碟映像、程式碼樹。它的 LZMA 壓縮明顯優於 deflate,而且免費開放,但收件人需要裝 7-Zip 或同類軟體。把 7z 寄給非技術背景的收件人,必然收到一封困惑的回信。
RAR 值得知道,主要是因為你會收到它。這個格式是專有的:解壓縮的支援很普遍,但要製作一個需要有授權的軟體,所以它不是一個適合當標準的格式。
tar.gz 與 tar.zst 是 Unix 的慣例,而且只要涉及檔案權限、符號連結,或是要部署到伺服器,它們就是正確選擇 —— 因為 tar 會保留那些中介資料,而 ZIP 大致上不會。在 Windows 上,沒有額外軟體會很不方便。
ZIP 最常出問題的兩件事
第一是檔名變亂碼,而那是規範的設計缺口,不是誰的 bug。最初的規範從來沒有規定檔名用什麼字元編碼,所以各家工具就寫入當時機器的本地代碼頁 —— 台灣是 Big5、中國大陸是 GBK、日本是 Shift_JIS。一個用來宣告「這是 UTF-8」的旗標是很久以後才加上的。當一個用某種假設寫出來的壓縮檔,被另一種假設讀取時,每一個非 ASCII 字元都變成雜訊。現代工具寫 UTF-8;非常舊的 Windows 解壓縮軟體不讀它。製作壓縮檔的人做任何事都修不了一個猜錯的讀取端 —— 這就是為什麼寄給未知收件人時,ASCII 檔名仍然是唯一的保證。
第二是密碼保護,而它比多數人以為的更糟。ZIP 最初的加密 ZipCrypto 有已知的明文攻擊,用公開可得的工具幾秒鐘就能破。取代它的強加密 AES-256 是廠商擴充,Windows 檔案總管完全打不開 —— 所以一個「有密碼的 ZIP」要嘛不安全,要嘛你的收件人用內建工具開不了。如果一個檔案真的需要保護,請用專門為這件事設計的工具加密檔案本身,並且用另一個管道傳送金鑰。
目前有什麼、還沒有什麼
製作壓縮檔已經可以用:選任何檔案、決定要壓多用力、下載一個 ZIP。什麼都不上傳、沒有大小上限、不用註冊;而且檔案清單會告訴你哪幾筆被壓縮、哪幾筆是直接存放的,所以最後的檔案大小永遠不會是個謎。
解壓縮還沒做,而我們寧可講明白,也不要在這一頁塞一堆連到不存在工具的連結。在那之前,上面那一段「不裝軟體怎麼打開壓縮檔」涵蓋了絕大多數情況,而且同樣不需要任何檔案離開你的裝置。
常見問題
打開 ZIP 一定要用線上工具嗎?
通常不需要。Windows、macOS、iOS、Android、Linux 都能在不安裝任何東西的情況下解開 ZIP。線上工具主要是在遇到作業系統處理不了的 7z、RAR,或 AES 加密壓縮檔時才有用。
為什麼我的 ZIP 跟原本檔案一樣大?
因為那些檔案已經被壓縮過了。JPG、PNG、MP4、MP3、PDF、DOCX 早就把自己的冗餘去掉,deflate 找不到東西可壓。但壓縮檔仍然讓你得到一個檔案而不是一堆。
為什麼解壓縮後中文檔名是亂碼?
ZIP 規範原本沒有定義檔名編碼,所以工具寫入的是本地代碼頁 —— 在台灣常常是 Big5。如果解壓縮的程式假設那是 UTF-8,每一個非 ASCII 字元就變成雜訊。那是寫入端與讀取端的不一致,不是檔案壞了。
有密碼的 ZIP 安全嗎?
用 ZIP 最初的 ZipCrypto 不安全,幾秒鐘就能破。強度足夠的 AES 變體是廠商擴充,Windows 檔案總管打不開。要真的保護,請用專門的工具加密檔案本身,金鑰另外傳。
這裡製作的壓縮檔有大小限制嗎?
我們沒有設限,天花板是你裝置的記憶體。另外要注意,傳統 ZIP 格式本身對單檔與整個壓縮檔的上限是 4 GB,除非使用 ZIP64 擴充。