zip 3.0 不向后兼容 zip 2.3.1?

zip 3.0 不向后兼容 zip 2.3.1?

我有两个文件,一个是用 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?

谢谢。

答案1

不同之处在于Zip64文件格式,这种格式是为了能够压缩较大的文件而引入的。较旧的实用程序(例如 Windows XP 的文件资源管理器)无法识别它。

就 Linux 而言,Debian Stableunzip 6.0包括至少它是 2011 年发布的(更新日志显示zip 3.0a它是在 2004 年发布的,但unzip 6.00实际上是在 2009 年发布的),所以我个人的看法是,如果你“强迫”你的用户升级,那么你就是在帮他们一个忙。

相关内容