一、wget简介
wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。
二、wget缺陷
我们以下载jdk为例,
[root@AY1112270623249c0e095 ~]# wget http://download.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm
--2013-01-12 18:21:14-- http://download.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm
正在解析主机 download.oracle.com... 23.67.244.19, 23.67.244.43
Connecting to download.oracle.com|23.67.244.19|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Moved Temporarily
位置:https://edelivery.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm [跟随至新的 URL]
--2013-01-12 18:21:16-- https://edelivery.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm
正在解析主机 edelivery.oracle.com... 23.15.138.174
Connecting to edelivery.oracle.com|23.15.138.174|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Moved Temporarily
位置:http://download.oracle.com/errors/download-fail-1505220.html [跟随至新的 URL]
--2013-01-12 18:21:17-- http://download.oracle.com/errors/download-fail-1505220.html
Connecting to download.oracle.com|23.67.244.19|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:5307 (5.2K) [text/html]
Saving to: `download-fail-1505220.html'
我以为这么快,结果这只是幻觉,连续试了好几次,还是这个结果,于是到网上查看,原来wget不只是重定向。参考地址:http://www.iteye.com/topic/1125585
三、wget下载jdk,解决wget缺陷
1、基于wget重定向问题,我们可以“欺骗服务器”,即添加一些参数
root@AY1112270623249c0e095 ~]#wget --no-cookie --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" http://download.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm
然后把下载下来的jdk改名
mv jdk-7u7-linux-* jdk-7u10-linux-i586.rpm
2.如果出现Unable to establish SSL connection的话,在wget后面加上--no-check-certificate. www.2cto.com
完整语句:
不管什么方法,解决问题就是好方法。
四、命令详解
命令格式
wget [options] [URL]
启动类参数
这一类参数主要提供软件的一些基本信息。
-V,--version 显示软件版本号然后退出;
-h,--help显示软件帮助信息;
-e,--execute=COMMAND 执行一个 “.wgetrc”命令
以上每一个功能有长短两个参数,长短功能一样,都可以使用。需要注意的是,这里的-e参数是执行一个.wgettrc的命令,.wgettrc命令其实是一个参数列表,直接将软件需要的参数写在一起就可以了。
文件处理参数
这类参数定义软件log文件的输出方式等。
-o,--output-file=FILE 将软件输出信息保存到文件;
-a,--append-output=FILE将软件输出信息追加到文件;
-d,--debug显示输出信息;
-q,--quiet 不显示输出信息;
-i,--input-file=FILE 从文件中取得URL;
例1:下载首页并且显示下载信息
wget -d
例2:下载首页并且不显示任何信息
wget -q
例3:下载filelist.txt中所包含的链接的所有文件
wget -i filelist.txt
wget -np -m -l 5 不下载本站所链接的其它站点内容,5级目录结构
下载参数
下载参数定义下载重复次数、保存文件名等。
-t,--tries=NUMBER 是否下载次数(0表示无穷次)
-O --output-document=FILE保存下载日志到文件FILE
-nc, --no-clobber 不要覆盖已经存在的文件
-N,--timestamping只下载比本地新的文件
-T,--timeout=SECONDS 设置超时时间
-Y,--proxy=on/off 关闭代理
例:下载的首页并将下载过程中的的输入信息保存到test.htm文件中
wget -O test.html
目录参数
目录参数主要设置下载文件保存目录与原来文件(服务器文件)的目录对应关系;
-nd --no-directories 不建立目录
-x,--force-directories 强制建立目录
可能现在我们对这里的目录还不是很了解,我们来看一个举例
例:下载的首页,并且保持网站结构
wget -x
HTTP参数
HTTP参数设置一些与HTTP下载有关的属性。
--http-user=USER设置HTTP用户
--http-passwd=PASS设置HTTP密码
--proxy-user=USER设置代理用户
--proxy-passwd=PASS设置代理密码
以上参数主要设置HTTP和代理的用户、密码;
递归参数设置
在下载一个网站或者网站的一个目录的时候,我们需要知道的下载的层次,这些参数就可以设置。
-r,--recursive 下载整个网站、目录(小心使用)
-l,--level=NUMBER 下载层次
例:下载整个网站
wget -r
递归允许与拒绝选项参数
下载一个网站的时候,为了尽量快,有些文件可以选择下载,比如图片和声音,在这里可以设置。
-A,--accept=LIST 可以接受的文件类型
-R,--reject=LIST拒绝接受的文件类型
-D,--domains=LIST可以接受的域名,用逗号分隔
--exclude-domains=LIST拒绝的域名,用逗号分隔
-L,--relative 下载关联链接
--follow-ftp 只下载FTP链接
-H,--span-hosts 可以下载外面的主机
-I,--include-directories=LIST允许的目录
-X,--exclude-directories=LIST 拒绝的目录