Centos 上大于 4GB 的文件损坏。如何提取?

Centos 上大于 4GB 的文件损坏。如何提取?

我在 centOS 5 上压缩了一个文件夹。压缩后大小约为 4.1GB。

现在我尝试解压它,但它给出了错误。我尝试了很多方法。首先使用 unzip 命令,它说

在此处输入图片描述

然后我尝试使用

jar xvf 文件名

我在研究过程中发现它可以工作。它可以提取一些文件,但随后出现以下错误。

在此处输入图片描述

最后我尝试了 7zip 作为选项。但它失败并给出以下错误。

在此处输入图片描述

以下是一些附加信息。

在文件上运行文件命令会得到

site_backup_sep03_2015.zip:Zip 存档数据,至少需要 v2.0 才能提取

运行 stat 命令后会得到

在此处输入图片描述

有没有办法提取该文件?

答案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 并从您的主目录运行它。

解压缩 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.

相关内容