我有两个文件,一个是用 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 年发布的),所以我个人的看法是,如果你“强迫”你的用户升级,那么你就是在帮他们一个忙。