125

我想提取一个名为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
4

9 回答 9

189

如果file filename.tar.gz给出此消息:POSIX tar 存档,则存档是 tar,而不是 GZip 存档。

解压不带 tar 的 tar z,它仅用于 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
于 2013-04-01T13:13:21.447 回答
17

据我所知,该命令是正确的,假设您的输入文件是一个有效的 gzipped tar 文件。你的输出表明它不是。如果您从 Internet 下载文件,您可能没有获得整个文件,请重试。

如果没有更多关于文件来源的知识,这里没有人能够给你一个具体的解决方案,只是有根据的猜测。

于 2013-04-01T13:08:16.867 回答
7

我有同样的错误命令的结果:

file hadoop-2.7.2.tar.gz

hadoop-2.7.2.tar.gz: HTML document, ASCII text

由于下载或其他问题导致文件不是gzip格式的原因。

于 2018-02-23T16:14:13.687 回答
5

使用“wget”命令下载的文件有时会发生这种情况。就在 10 分钟前,我试图从命令屏幕安装一些东西到服务器,同样的事情发生了。作为一种解决方案,我只是将 .tar.gz 文件从网上下载到我的机器,然后通过 FTP 将其上传到服务器。之后,“tar”命令按预期工作。

于 2015-04-13T11:38:03.957 回答
2

内部将从环境变量中tar xcvf <filename>调用二进制文件来解压缩存档中的文件。有时第三方工具使用与二进制文件不兼容的自定义二进制文件。检查with中的二进制文件并确保调用了正确的二进制文件是个好主意。gzipPATHtargziptargzipPATHwhich gzipgzip

于 2016-09-30T12:07:24.383 回答
0

tar.gz 是 gzip 文件中的 tar 文件,因此首先您必须使用 解压缩 gzip 文件gunzip -d filename.tar.gz,然后使用tar解压缩它。但是,既然gunzip说它不是 gzip 格式,你可以用 来查看它是什么格式file filename.tar.gz,并使用适当的程序打开它。

于 2013-04-01T13:20:14.940 回答
0

检查以确保文件完整。如果您只下载了部分文件或文件存在重大问题,则可能会出现此错误消息。检查 MD5sum。

于 2014-12-19T17:20:22.453 回答
0

您必须验证的另一种情况是您尝试解压缩的文件不是空的并且是有效的。

在我的情况下,我没有正确下载文件,经过仔细检查并确保我有正确的文件,我可以毫无问题地解压它。

于 2020-03-31T20:33:59.320 回答
0

所以,基本上看起来的tar.gz文件并不是它应该的格式。这可以使用fileLinux 命令确定。例如,对于正版.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

因此,您收到文件的来源并没有以正确的格式发送它。如果您.tgz从 URI 下载了所谓的文件,则 URI 可能是错误的。.tgz就我而言,我在提取 kafka 二进制文件(文件)时遇到了同样的问题。原来,URIwget不正确。至少对于 kafka,要从下载页面 ( https://kafka.apache.org/downloads.html ) 获取正确的下载链接,我们必须遍历到由代表二进制文件的链接突出显示的页面。进入该页面后,我们将获得下载二进制文件的确切链接。此外,在下载期间,wget显示将下载的文件的类型。它将打印类似这样的内容来指示类型。

Length: unspecified [text/html]--> 不正确的 URI。

Length: 71403603 (68M) [application/octet-stream]--> 正确的 URI。

于 2021-07-15T08:41:07.320 回答