在比較三種格式之前,有一件更有用的事要先講清楚——因為它決定了這個比較對你有沒有意義。
JPG、PNG、PDF、MP4、MP3、DOCX、XLSX 都是已經壓縮過的。壓縮的原理是找出重複然後用更短的方式編碼;那些格式早就把重複拿掉了。對結果再跑一次壓縮器,幾乎找不到還能擠的東西。
把二十張照片放進 ZIP,壓縮檔大概只比原檔小 1–2%。有時候還更大,因為壓縮檔本身要加自己的結構。一整個資料夾的 PDF 也一樣,影片更是——那是大多數人手上壓得最兇的東西。
這件事要緊,是因為「壓一下寄 Email」正是大家拿出壓縮軟體最常見的理由——而偏偏對那些檔案,它是唯一沒用的做法。一個 40 MB 的 PDF 寄不出去,壓成 ZIP 會得到一個 39 MB 的 ZIP。**把 PDF 本身壓縮**——把裡面的圖片用合理的解析度重新編碼——會得到一個 4 MB 的 PDF。那是不同的操作,結果也不同。
壓縮檔真正能瘦的是文字:原始碼、CSV、log、XML、BMP 和 TIFF 這類未壓縮的圖、資料庫。一個資料夾的 CSV 可以掉 80–90%。如果你手上是那種,繼續往下看。
ZIP 從 1989 年就有了,而且內建在 Windows、macOS、Linux、iOS、Android 裡。沒有人需要安裝任何東西,而這一件事的份量超過大多數技術考量。
它的壓縮率是三者中最弱的,在大量檔案時差距明顯。它把每個檔案獨立壓縮——這會犧牲壓縮率,但有個真實的好處:你可以不處理整個壓縮檔就取出其中一個,而且一個損壞的 ZIP 通常還能救回壞掉之前的檔案。
加密要小心。ZIP 支援兩種機制:原始的 ZipCrypto,密碼學上已被破解,應該當成完全沒有保護;以及 AES-256,這個是可靠的,但不是每個工具預設都用它。如果你要加密 ZIP,要確認你拿到的是哪一種。
還有一個限制:ZIP 加密的是檔案內容,但檔名仍然看得見。拿到壓縮檔的人不需要密碼就知道裡面有什麼。
7z 是開放、免費的,而且壓得比另外兩個都兇——可壓縮的內容上通常比 ZIP 小 20–40%,大量相似檔案時更多。
差距來自兩件事。它用 LZMA2,一個較現代、搜尋視窗大得多的演算法。還有它支援固實壓縮:不是把每個檔案分開壓,而是把整組當成一條連續的資料流,所以**檔案之間**的重複也被壓掉了。一個裝著一千個相似 HTML 的資料夾,得益極大。
固實壓縮有代價,而且剛好是 ZIP 那個優點的鏡像:要取出一個檔案,壓縮器必須把它前面的全部處理過一遍。壓縮檔大的時候很慢,而且前段損壞會讓後面全部報廢。
它的加密是 AES-256,而且和 ZIP 不同,它連檔名也能加密——沒有密碼的話,壓縮檔什麼都不洩漏。
缺點是支援度。Windows 和 macOS 不裝東西就打不開 7z。對一個你不認識的收件人來說,那是真實的障礙。
RAR 壓得比 ZIP 好,和 7z 大致相當,某些內容上還會贏。它支援固實壓縮、AES-256,而且有一個真正獨特的功能:修復記錄——存在壓縮檔裡的冗餘資料,可以修復損壞的檔案。對於要寫進實體媒體、或透過不穩定連線傳輸的東西,那是真實的價值。
但 RAR 是專有格式。解壓縮免費;**建立 RAR 壓縮檔需要授權**。既然 7z 在壓縮率上打平、免費而且開放、加密至少一樣好,新的東西沒什麼理由選 RAR。它還在,主要是慣性和既有的壓縮檔。
這個值得單獨講,因為一般的直覺是錯的。當東西太大寄不出去:
反過來做——先壓縮、發現沒省到、再把 ZIP 切成好幾段——只會做出一個需要對方重新組裝的包裹,而且一點都沒變小。