如何在 Linux 上解压包含 4Gb 以上文件的多部分 zip 存档

如何在 Linux 上解压包含 4Gb 以上文件的多部分 zip 存档

我从一位同事(他使用 Windows 作为桌面系统)那里收到了一个多部分 zip 存档,我想提取其中的文件(虚拟机映像)。

第一次尝试(简单unzip):

% unzip 'SATT ORG.zip' 'SATT ORG/Windows_Server_2003_Standard_Edition-disk1.vdi'
Archive:  SATT ORG.zip
warning [SATT ORG.zip]:  zipfile claims to be last disk of a multi-part archive;
  attempting to process anyway, assuming all parts have been concatenated
  together in order.  Expect "errors" and warnings...true multi-part support
  doesn't exist yet (coming soon).
file #1:  bad zipfile offset (local header sig):  115300
%

阅读一些关于这个主题的内容表明我应该尝试一下zip -FF。经过一些实验,我得出了以下结论:

% % zip -FF 'SATT ORG.zip' --out fixed.zip
Fix archive (-FF) - salvage what can
 Found end record (EOCDR) - says expect 9 splits
Scanning for entries...
  Found spanning marker - expected as this is split (multi-disk) archive...
 copying: SATT ORG/  (0 bytes)
 copying: SATT ORG/Logs/  (0 bytes)
 copying: SATT ORG/Logs/VBox.log  (19450 bytes)
 copying: SATT ORG/Logs/VBox.log.1  (19762 bytes)
 copying: SATT ORG/Logs/VBox.log.2  (19619 bytes)
 copying: SATT ORG/Logs/VBox.log.3  (19900 bytes)
 copying: SATT ORG/Logs/VBoxStartup.log  (30701 bytes)
 copying: SATT ORG/SATT ORG.vbox  (2675 bytes)
 copying: SATT ORG/SATT ORG.vbox-prev  (2675 bytes)
 copying: SATT ORG/Snapshots/  (0 bytes)
 copying: SATT ORG/Windows_Server_2003_Standard_Edition-disk1.vdi  (4959998416 bytes)
 copying: SATT ORG/Windows_Server_2003_Standard_Edition-disk2.vdi  (6201052986 bytes)
 copying: SATT ORG/Windows_Server_2003_Standard_Edition-disk3.vdi  (6665110640 bytes)
Central Directory found...
        zip warning: Entry too big:SATT ORG/Windows_Server_2003_Standard_Edition-disk1.vdi

zip error: Entry too big to split, read, or write (Poor compression resulted in unexpectedly large entry - try -fz)
%

我也尝试过jarPython 脚本,但没有任何成功。

欢迎提出建议。(我在地下室的某个地方有 Windows 系统和一个足够大的 exfat 格式的 USB 记忆棒,因此即使需要经过 Windows 的解决方案也可能可行。)

相关内容