我从一位同事(他使用 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)
%
我也尝试过jar
Python 脚本,但没有任何成功。
欢迎提出建议。(我在地下室的某个地方有 Windows 系统和一个足够大的 exfat 格式的 USB 记忆棒,因此即使需要经过 Windows 的解决方案也可能可行。)