因此我从 OneDrive 下载了一个 45GB 的目录,并以 zip 文件的形式保存在我的 Ubuntu VM 上。
现在,当我尝试通过 GUI 提取它时,它会给我一个错误,说档案是空的。
当我尝试unzip
通过终端使用该命令时,它出现错误:
警告 [Archive.zip]: zip 文件开头或内部有 43855246100 个额外字节(无论如何尝试处理)
错误 [Archive.zip]:未找到中央目录的启动;zip 文件已损坏。
(请检查您是否已在适当的二进制模式下传输或创建了 zip 文件,以及是否已正确编译 UnZip)
从上面的链接我了解到,对于大于 4GB 的档案,解压会失败。
所以我尝试了其他多个选项,例如tar xvf
,,jar xf
7z x
- 对于
tar xvf
,我得到
tar:这看起来不像是 tar 档案
tar:跳至下一个标题
- 对于
7z x
,档案被提取,但出现以下错误:
标头错误
未经确认的档案开始日期
警告
存档结束后还有数据
此外,原始(下载的)zip文件中应该有一些.rar文件,但这些文件在解压位置却丢失了。
- 对于
jar xf
,我收到错误:
JAR 文件中有错误!(未压缩但有数据描述)
当我尝试跑步时zip -T Archive.zip
,我得到了
无法找到 Archive.z01
点击 c(将路径更改为此分割文件所在的位置)
q(中止存档 - 退出)
或 ENTER(尝试再次读取此分割):
OneDrive 有可能给我一个损坏的档案吗?
答案1
我知道这个问题是一年多前发布的,但在遇到看似完全相同的问题后,我可能能够提供一些答案。此互操作性问题最可能的原因是 OneDrive 对 ZIP64 扩展的实现,更准确地说是“中央目录定位器的 zip64 结尾”中“磁盘总数”字段的值。在 OneDrive 文件中,此值设置为 0(零),而大多数阅读器工具期望值为 1。
欲了解更多信息,请参阅我在博客上发布的详细文章:
如果您对十六进制编辑很熟悉,您可以通过更改十六进制编辑器中“磁盘总数”字段的第一个字节来临时“修复”受影响的文件,有关详细信息,请参阅我的博客文章。
更新:部分受我的博客文章的启发,有人编写了一个 Perl 脚本,可以自动修复这些文件,有关更多详细信息,请参阅此链接:
https://unix.stackexchange.com/a/590034
脚本的直接链接:
https://github.com/pmqs/Fix-OneDrive-Zip
此外,这来自 Microsoft 的支持页面说(从顶部开始第三个‘注释’部分):
下载受以下限制:单个文件大小限制:10GB;总 zip 文件大小限制:20GB;文件总数限制:10,000。
因此对于 45 GB 的目录,您也可能会达到这些大小限制。