解压.tar.gz出错gzip: stdin: not in gzip format tar: /Child returned status 1 tar: Error is not recoverable: exiting now

最近研究shell编程,需要下载解压一些.tar.gz的文件,但经常遇到解压失败的情况:

[root@xxxxxxx ~]# tar -jxvf tcl8.4.16-src.tar.gz 
bzip2: (stdin) is not a bzip2 file.
tar: Child returned status 2
tar: Error is not recoverable: exiting now

今天仔细研究了一下,如何解决这个问题:

1. 先查看文件真正的属性是什么?

[root@xxxxx ~]# tar -zxvf tcl8.4.16-src.tar.gz 

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
[root@xxxxxx ~]# file tcl8.4.16-src.tar.gz 
tcl8.4.16-src.tar.gz: HTML document text

我赛,竟然是HTML,这次终于知道是为什么了。

理由如下:

文件的下载链接不是直接指向文件,而是先指向一个页面,在这个页面里才是真的下载链接,所以在前一个页面上直接保存文件,实际上保存的是一个页面。

假如属性是bz文件,就用bz文件的解压方式。

补充一下file命令:

通过file指令,我们得以辨识该文件的类型。

参  数:
 -b  列出辨识结果时,不显示文件名称。
 -c  详细显示指令执行过程,便于排错或分析程序执行的情形。
 -f<名称文件>  指定名称文件,其内容有一个或多个文件名称呢感,让file依序辨识这些文件,格式为每列一个文件名称。
 -L  直接显示符号连接所指向的文件的类别。
 -m<魔法数字文件>  指定魔法数字文件。
 -v  显示版本信息。
 -z  尝试去解读压缩文件的内容。

 2.重新获取tar包路径,先用浏览器打开,从弹出来的save 对话框里获取下载链接

这次就完美了!

 

posted @ 2015-11-10 14:27  lucky_zhang  阅读(59500)  评论(1编辑  收藏  举报