Compression

zip 3.0 不向後兼容 zip 2.3.1?

  • December 4, 2012

我有兩個文件,一個是用 zip 2.3.1 製作的,另一個是用 zip 3.0 製作的。兩者都是同一目錄的 zip。這是兩個文件及其大小:

1.7G from-2.3.1.zip  
1.7G from-3.0.zip

我的計劃是將我的系統轉換為新的 zip,這樣我就可以創建更大的 zip 文件,比如高達 3 GB 左右。

但是,我擔心的是,當我使用稍舊版本的 unzip 解壓縮這些文件時,嘗試解壓縮使用 zip 3.0 創建的 zip 時會出錯。

$ unzip -t from-2.3.1.zip > /dev/null  # NO Errors
$ unzip -t from-3.0.zip > /dev/null
warning [from-3.0.zip]:  76 extra bytes at beginning or within zipfile
 (attempting to process anyway)
error [from-3.0.zip]:  reported length of central directory is
 -76 bytes too long (Atari STZip zipfile?  J.H.Holm ZIPSPLIT 1.1
 zipfile?).  Compensating...
error:  expected central file header signature not found (file #67358).
 (please check that you have transferred or created the zipfile in the
 appropriate BINARY mode and that you have compiled UnZip properly)
$ 

我擔心的原因是,如果我遷移到 zip 3.0,我將強制我的下游使用者全部升級到更新版本的 unzip,因為例如 unzip 6.0 解壓縮這兩個文件時不會出錯。

這種異常並非在所有情況下都會發生,所以我不確定它的全部程度。

有什麼建議麼?我是否以某種方式錯誤地建構了 zip 3.0?

謝謝。

不同之處在於Zip64文件格式,它是為了能夠壓縮更大的文件而引入的。較舊的實用程序(例如 Windows XP 的文件資源管理器)不理解它。

就 Linux 而言,至少unzip 6.0自 2011 年發布以來,Debian Stable 就已包含在內(變更日誌稱於 2004年發布並於 2009 年發布),所以我個人的看法是,如果您“強迫”您的使用者升級,那麼您就是幫他們一個忙。zip 3.0a``unzip 6.00

引用自:https://serverfault.com/questions/454935