我有一堆文件,其.zip
扩展名似乎无法在我的 HPC 上提取:
$ unzip RowlandMetaG_part1.zip
Archive: RowlandMetaG_part1.zip
warning [RowlandMetaG_part1.zip]: 13082642473 extra bytes at beginning or within zipfile
(attempting to process anyway)
error [RowlandMetaG_part1.zip]: start of central directory not found;
zipfile corrupt.
(please check that you have transferred or created the zipfile in the
appropriate BINARY mode and that you have compiled UnZip properly)
zip 文件本身的大小为 17377631766 字节。
但是,当我将文件下载到我的 mac 并双击时,Archive Utility 应用程序能够解压缩文件(它包含一个包含大约 200 个 gzip 压缩文件的目录)。
生成文件的地方说:
这些文件在我们本地运行 Windows 的实验室 PC 上简单地压缩到这里,然后上传到 Dropbox……大多数人对它们没有任何问题,许多人可以直接将我使用 Linux wget 命令提供的链接直接下载到他们的服务器中,然后在那里解压缩(Linux 实用程序通常可以处理 PC 压缩文件)。
我不确定文件来自保管箱的事实是否相关,但我曾经curl -LO
下载过(也尝试过wget
- 这不会改变任何东西),并且文件显示?dl=1
在文件名的末尾。也就是说,当我从 Dropbox 下载到我的 Mac 时,unzip
仍然失败并出现同样的错误。
我的问题 - 有没有办法让它在服务器上解压缩?一些软件可以完成与 Archive Utility.app 相同的事情,或者其他确定使用什么解压缩协议的方法?
编辑:根据评论:一些附加信息:
$ file RowlandMetaG_part1.zip
RowlandMetaG_part3.zip: Zip archive data, at least v2.0 to extract
$ zip --version
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008), by Info-ZIP.
另外,我确实尝试过tar
,但没有成功。
$ tar -xvf RowlandMetaG_part1.zip
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Archive contains `l@\022\t1\fjp\024uP\020' where numeric off_t value expected
tar: Archive contains `\024\311\032b\234\254\006\031' where numeric mode_t value expected
tar: Archive contains `\312\005hЈ\2138vÃ\032p' where numeric time_t value expected
# etc...
我最终在这样的目录中得到废话:
$ ls
???MK??%b???mv?}??????@*??TZ?S?? ??????+??}n>,!???ӟw~?i?(??5?#?ʳ??z0?[?Ed?@?쑱??lT?d???A??T???H??
,??Y??:???'w,??+?ԌU??Wwxm???e~??ZJ]y??ˤ??4?SX?=y$Ʌ{N\?P}x~~?T?3????y?????'
有可能,虽然文件以“.zip”结尾,但它不是一个 zip 文件。
file
您可以使用该实用程序确认这是否是一个 zip 文件(同时确定实际文件格式是什么) :file RowlandMetaG_part1.zip
确定文件格式后,您可以使用适当的工具将其取消归档。
事实证明,由于文件太大,
zip
无法处理(最大为 2Gb)。相反,我可以使用jar
:尝试使用 tar 实用程序提取它
也许这个链接可能是相关的:
https://apple.stackexchange.com/questions/208139/how-to-deal-with-unzip-error-on-a-large-file-in-osx
我遇到了同样的问题,但无法解决。如果我这样做,我会更新这个答案。
但是,要弄清楚一些事情:
您可以相信文件是 zip 文件的 OP。
Linux 解压缩工具似乎存在的“问题”是文件最后没有中央目录,而是需要按顺序解压缩,而 Linux 工具似乎无法做到这一点。
从理论上讲,该
zip
工具应该能够通过选项来解决此问题,该-FF
选项按顺序扫描存档,然后从中创建一个新的 zip 文件。然而,事实证明,这不适用于大型(> 4GB)zip - 它会创建另一个不可读的 zip 文件,最后没有中央目录。背景:PKZIP归档格式将每个归档项目的信息存储在两个位置:一次在每个压缩流之前(这是强制性的,尽管长度信息可能不正确),另一个时间在所有存储项目列表的末尾,以及这是一种可选的(好吧,根据标准的定义,应该总是有一个,但它也允许通过初始条目进行回退,Apple 的 zip 工具显然就是这样做的)。
在对该问题进行更多分析之后,我认为问题在于:
添加一个注释,在我的例子中,tar/jar 都失败了,但是 7zip 有帮助(7z x big.zip)。大文件讨论向我指出了 Apple 堆栈上的这个有用问题,如何处理 OSX 中大文件的解压缩错误?