如何提取 filename.tar.gz 文件
Posted
技术标签:
【中文标题】如何提取 filename.tar.gz 文件【英文标题】:How to extract filename.tar.gz file 【发布时间】:2013-03-22 13:28:45 【问题描述】:我想提取一个名为 filename.tar.gz
的存档。
使用tar -xzvf filename.tar.gz
不会提取文件。它给出了这个错误:
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
【问题讨论】:
file filename.tar.gz
"file" 将显示格式(如果已安装),如果是 zip,请尝试 unzip
或安装通用解包器,如 unp
。
该错误意味着该文件不是gzip
文件,尽管扩展名是这样说的。试试unzip filename.tar.gz
和gunzip filename.tar.gz
看看输出是什么。
@Max Leske 感谢您的建议,但是当我尝试 gunzip filename.tar.gz
时,它给出了错误消息:not in gzip format
@pce file filename.tar.gz
给出这个消息:POSIX tar 归档
这真的应该在 alt.se.unix 上,而不是在这里。
【参考方案1】:
如果file filename.tar.gz
给出此消息:POSIX tar 存档,
存档是 tar,而不是 GZip 存档。
解压一个没有z
的tar,它只用于gzipped(压缩):
mv filename.tar.gz filename.tar # optional
tar xvf filename.tar
或者试试像unp
(https://packages.qa.debian.org/u/unp.html) 这样的通用解包器,一个用于解包各种存档格式的脚本。
确定文件类型:
$ file ~/Downloads/filename.tbz2
/User/Name/Downloads/filename.tbz2: bzip2 compressed data, block size = 400k
【讨论】:
感谢@pce 的支持。你的答案是正确的。tar xvf filename.tar.gz
。它对我有用。
tar xvf hadoop-2.7.2.tar tar: Ceci ne ressemble pas à une archive de type «tar » tar: Arrêt avec code d'échecàcause des erreurs précédentes【参考方案2】:
据我所知,该命令是正确的,假设您的输入文件是一个有效的 gzipped tar 文件。你的输出表明它不是。如果您是从 Internet 下载的文件,您可能没有获得整个文件,请重试。
如果没有更多关于文件来源的知识,这里没有人能给你一个具体的解决方案,只是有根据的猜测。
【讨论】:
这让我重新审视了我正在下载的文件。它来自 apache,并且 url 以 .tar.gz 结尾,所以我只是复制并粘贴它。但是,该链接不是用于 tarball,而是用于列出 tarball 镜像的页面。所以 30 分钟我试图解压一个 html 页面。 Wtf Apache。 我遇到了这个问题,请仔细检查您的文件大小是否正确,如果可能也使用校验和。【参考方案3】:我有同样的错误 命令结果:
file hadoop-2.7.2.tar.gz
是hadoop-2.7.2.tar.gz: HTML document, ASCII text
由于下载或其他问题导致文件不是gzip格式的原因。
【讨论】:
你解决了吗?这里有同样的问题。 @arilwan 如果您对此有疑问,请尝试在文本编辑器中打开文件。答案是下载错误,所以他们得到了一个 HTML 错误页面,而不是预期的 gzip 文件。下载程序 (wget?) 仍然使用 .gz 扩展名保存它。【参考方案4】:使用“wget”命令下载的文件有时会发生这种情况。就在 10 分钟前,我试图从命令屏幕安装一些东西到服务器,同样的事情发生了。作为一种解决方案,我只是将 .tar.gz 文件从网上下载到我的机器,然后通过 FTP 将其上传到服务器。之后,“tar”命令按预期工作。
【讨论】:
嗯,检查 wget 日志,也许你被重定向或什么的【参考方案5】:在内部,tar xcvf <filename>
将从PATH
环境变量中调用二进制文件gzip
以解压缩tar
存档中的文件。有时第三方工具使用与tar
二进制不兼容的自定义gzip
二进制。
使用which gzip
检查PATH
中的gzip
二进制文件是个好主意,并确保调用了正确的gzip
二进制文件。
【讨论】:
【参考方案6】:tar.gz 是 gzip 文件中的 tar 文件,因此首先您必须使用 gunzip -d filename.tar.gz
解压缩 gzip 文件,然后使用 tar
解压缩它。但是,由于gunzip
表示它不是 gzip 格式,您可以通过file filename.tar.gz
看到它是什么格式,并使用适当的程序打开它。
【讨论】:
【参考方案7】:检查以确保文件完整。如果您只下载了部分文件或文件存在重大问题,则可能会出现此错误消息。检查 MD5sum。
【讨论】:
【参考方案8】:您必须验证的另一种情况是您尝试解压缩的文件不是空的并且是有效的。
在我的情况下,我没有正确下载文件,经过仔细检查并确保我有正确的文件,我可以毫无问题地解压它。
【讨论】:
【参考方案9】:所以,基本上看似tar.gz
的文件并不是它应有的格式。这可以使用file
Linux 命令确定。例如,对于一个正版的.tgz
文件,命令输出如下:
root@f562353fc1ab:/app# file kafka_2.13-2.8.0.tgz
kafka_2.13-2.8.0.tgz: gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT), original size modulo 2^32 75202560
因此,您收到文件的来源并未以正确的格式发送文件。如果您从 URI 下载了所谓的 .tgz
文件,则可能是 URI 错误。就我而言,我在提取 kafka 二进制文件(.tgz
文件)时遇到了同样的问题。事实证明,wget
的 URI 不正确。至少对于 kafka 来说,要从下载页面 (https://kafka.apache.org/downloads.html) 获取正确的下载链接,我们必须遍历到由代表二进制文件的链接突出显示的页面。进入该页面后,我们将获得下载二进制文件的确切链接。此外,在下载过程中,wget
会显示将要下载的文件的类型。它将打印类似这样的内容来指示类型。
Length: unspecified [text/html]
--> URI 不正确。
Length: 71403603 (68M) [application/octet-stream]
--> 正确的 URI。
【讨论】:
以上是关于如何提取 filename.tar.gz 文件的主要内容,如果未能解决你的问题,请参考以下文章