问题背景
我是在CentOS上面使用wget命令下载JDK8的源码之后,使用tar命令解压下载的文件,结果出现这样的错误:
[root@VM_0_8_centos src]# wget https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz ............................ Saving to: ‘jdk-8u201-linux-x64.tar.gz’ [root@VM_0_8_centos src]# tar -zxf jdk-8u201-linux-x64.tar.gz gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now
网上查了一下资料,其中这篇博客中的https://blog.csdn.net/ghb5371548/article/details/5539543里面介绍了一种方式:
就是将文件名后面的gz去掉,即:Xxx.tar.gz--->Xxx.tar,然后使用tar -xvf Xxx.tar进行解压。
但是我按照他们的做法去尝试时,发现并不能解决问题:
[root@VM_0_8_centos src]# mv jdk-8u201-linux-x64.tar.gz jdk-8u201-linux-x64.tar [root@VM_0_8_centos src]# tar -xvf jdk-8u201-linux-x64.tar tar: This does not look like a tar archive tar: Skipping to next header tar: Exiting with failure status due to previous errors
此时提示我这并不是一个tar包。
发现问题
使用file命令查看一下文件的格式,这才让我茅塞顿开,原因在于,我下载的文件根本就是不是压缩包,而是被服务器当成spider,下载的文件其实是一个HTML:
[root@VM_0_8_centos src]# file jdk-8u201-linux-x64.tar jdk-8u201-linux-x64.tar: HTML document, ASCII text, with very long lines, with CRLF line terminators [root@VM_0_8_centos src]# head -5 jdk-8u201-linux-x64.tar <html> <head> <title>Unauthorized Request</title> <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> <link rel="stylesheet" type="text/css" href="/errors/us/assets/hp-styles.css" />
解决问题
既然是被当成spider了,可以设置一些header头部信息,比如user-agent,还不如利用浏览器下载之后,使用ftp上传到服务器上面。