我正在从网站下载一个 ZIP 文件,该 ZIP 文件包含大量 JSON 和 XML 文件,然后我尝试解压这些文件。
我遇到的问题是解压不想解压文件:
unzip meta.zip
Archive: meta.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of meta.zip or
meta.zip.zip, and cannot find meta.zip.ZIP, period.
7z 也有同样的问题:
7z x meta.zip
7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=de_DE.UTF-8,Utf16=on,HugeFiles=on,12 CPUs)
Processing archive: meta.zip
Error: Can not open file as archive
由于某种原因,文件本身被识别为 HTML 文档:
file meta.zip
meta.zip: HTML document, UTF-8 Unicode text, with very long lines
我的问题是,如何解压这个文件? Mac 和 Windows 都可以正常解压。
谢谢!
答案1
我想你已经回答了你自己的问题。如果file
告诉您这是一个 HTML 文件,这就是为什么zip
无法打开它 - 它是 HTML,而不是包含 HTML 文件的 ZIP 文件。文件里有什么? (您可以使用例如 进行检查less
)。
答案2
也许档案真的被损坏了。
请参阅 zip 的手册页,了解用于修复存档的 --fix + --fixfix 选项。
多次使用--fixfix 可以修复此类损坏。
答案3
我几乎可以肯定您手上有一个文本文件。这只是重定向到真正的 zip 文件。file
(据我所知)相当可靠。除此之外,less meta.zip
总会产生输出:
Archive: meta.zip meta.zip (END)
因此,这不是确定文件类型的可靠方法,因为它仅依赖于扩展名。
要提取文件,只需使用 Firefox 等网络浏览器重新下载存档,然后执行unzip meta.zip
访问存档的内容即可。
答案4
您可以尝试使用foremost或binwalk来提取文件的内容。尝试“最前面的文件名”或“binwalk -e 文件名”。您可以使用包管理器(通常是 yum 或 apt)安装它(如果没有)。