提取tar.gz文件将返回“看起来不像tar存档”。


29

我有一个tar.gz文件,我想使用终端将其解压缩。我使用了以下命令:tar tvzf ldtp_3.5.0.orig.tar.gztar -xvzf ldtp_3.5.0.orig.tar.gz。但是,两个文件的结果相同:

tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

我的file命令输出显示了一个gzip文件:

$ file ldtp_3.5.0.orig.tar.gz 
ldtp_3.5.0.orig.tar.gz: gzip compressed data, from Unix

我可以使用右键单击->提取来提取它,但是我想使用终端来提取它。谁能告诉我该怎么做?

Answers:


38

查看错误后,您会发现实际上是可以解压缩的,它表示该文件是正版TAR / Gzip存档,但可能不是在Gzip之后立即创建的TAR。

这意味着,如果您是从Web服务器下载的,则有时会将Gzip压缩应用到服务器级别的Web内容上,以加快内容下载的速度。但是,如果在服务器上没有正确设置以忽略已经压缩的内容(例如这样),它可能会无意中将Gzip文件加倍。

考虑到这一点,我将查看是否只需从命令行将其解压缩即可查看发生了什么。使用如下命令:

gzip -d ldtp_3.5.0.orig.tar.gz

并查看生成的文件是什么。运行该命令后,我有一种奇怪的感觉,您将ldtp_3.5.0.orig.tar在目录中看不到a ,而是看到一个类似于源文件的文件ldtp_3.5.0.orig.tar.gz-但是也许修改了吗?如果是这样的话,它确实是双重压缩的。因此,此时,在最初的解压缩后,您可以运行如下tar命令:

tar -xvzf ldtp_3.5.0.orig.tar.gz

现在,它应该正确解压缩完整的TAR存档。

与该两步过程类似的另一种方式是将如下的输出gzip传递给管道tar

gzip -dc ldtp_3.5.0.orig.tar.gz | tar -xvzf -

cgzip还有-在命令的末尾的关键在于:

  • c选项gzip将告诉gzip解压缩到标准输出流。
  • 该命令-末尾的tar表示“使用标准输入”。因此,与-cin 耦合后gzip,管道将从管道中获取标准输出流,gzip并将其连接到in中的标准输入tar

1
我尝试了第一个命令,gzip -d ldtp_3.5.0.orig.tar.gz然后(奇怪地)得到了一个.tar文件。但是,当我尝试时,tar -xvf ldtp_3.5.0.orig.tar我收到一个错误消息: tar: v: Cannot open: No such file or directory tar: Error is not recoverable: exiting now
TheRookierLearner 2014年

@TheRookierLearner然后,如果您要在gzip -d ldtp_3.5.0.orig.tar上执行该ldtp_3.5.0.orig.tar怎么办?
JakeGould 2014年

我尽力了gzip -d ldtp_3.5.0.orig.tar.gz,得到了信息gzip: ldtp_3.5.0.orig.tar: unknown suffix -- ignored gzip: on.gz: No such file or directory gzip: the.gz: No such file or directory gzip: ldtp_3.5.0.orig.tar: unknown suffix -- ignored 。在此之后,我尝试了tar -xvzf ldtp_3.5.0.orig.tar并成功了!万分感谢!
TheRookierLearner 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.