我有一个tar.gz文件,我想使用终端将其解压缩。我使用了以下命令:tar tvzf ldtp_3.5.0.orig.tar.gz
和tar -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
我可以使用右键单击->提取来提取它,但是我想使用终端来提取它。谁能告诉我该怎么做?
查看错误后,您会发现实际上是可以解压缩的文件,它表示该文件是真正的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 -
将c
在gzip
还有-
在命令的末尾的关键在于:
c
选项gzip
将告诉gzip
解压缩到标准输出流。-
在所述的端部tar
命令的意思是“使用标准输入。” 因此,与-c
in耦合后gzip
,管道将从中获取通过其传输的标准输出流,gzip
并将其连接到in的标准输入tar
。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句