答案1
如果你在 32 位系统上使用 32 位应用程序和/或使用 6.0 之前的 unzip 版本,你很可能会遇到这些限制之一
最有可能的是这个限制,“单个文件的压缩大小” 4GB
实际上,由于 UnZip 使用 fseek() 函数在存档内跳转,因此许多系统上的实际限制可能是 2 GB。由于 fseek 的偏移量参数通常是一个有符号长整数,因此在 32 位系统上,UnZip 找不到距离存档开头超过 2 GB 的任何文件。而在 64 位系统上,UnZip 找不到距离开头超过 4 GB 的任何文件(因为 zipfile 格式只能存储这么大的偏移量)。因此,存档中的最后一个文件可能任意大(无论如何,理论上如此——我们还没有测试过这一点),但其余所有文件的总和必须分别小于 2 GB 或 4 GB。
因此不幸的是,除非您能找到另一个可以读取和解压缩文件的应用程序,否则您必须转移到 64 位系统或将您的系统更新到附带 unzip 6.0 的 CentOS 7,或者在您的 CentOS 5 机器上编译 unzip 6.0 并从您的主目录运行它。
[剪辑]。. Zip 存档条目大于 4 GiBytes
答案2
做一个复制然后尝试该文件zip -FF <filename>
。
来自手册页 ( man zip
)
-F Fix the zip archive. This option can be used if some portions
of the archive are missing. It is not guaranteed to work, so
you MUST make a backup of the original archive first.
When doubled as in -FF the compressed sizes given inside the
damaged archive are not trusted and zip scans for special
signatures to identify the limits between the archive members.
The single -F is more reliable if the archive is not too much
damaged, for example if it has only been truncated, so try this
option first.