解压.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 对话框里获取下载链接
这次就完美了!