(1)wget介绍

wget是一个用于文件下载的命令行工具,选项繁多且用法灵活。


(2)wgethelp

[root@MuBanJi_01 ~]# wget --help
GNU Wget 1.12,非交互式的网络文件下载工具。
用法: wget [选项]... [URL]...
 
长选项所必须的参数在使用短选项时也是必须的。
 
开始:
  -V,  --version           显示 Wget 的版本信息并退出。
  -h,  --help              打印此帮助。
  -b,  --background        启动后转入后台。
  -e,  --execute=COMMAND   运行一个‘.wgetrc’风格的命令。
 
登入并输入文件:
  -o,  --output-file=FILE    将信息写入 FILE。
  -a,  --append-output=FILE  将信息添加至 FILE。
  -d,  --debug               打印大量调试信息。
  -q,  --quiet               安静模式(无信息输出)。
  -v,  --verbose             详尽的输出(此为默认值)。
  -nv, --no-verbose          关闭详尽输出,但不进入安静模式。
  -i,  --input-file=FILE     下载本地或外部 FILE 中的 URLs。
  -F,  --force-html          把输入文件当成 HTML 文件。
  -B,  --base=URL            解析与 URL 相关的
                             HTML 输入文件(由 -i -F 选项指定)。
 
下载:
  -t,  --tries=NUMBER            设置重试次数为 NUMBER (0 代表无限制)。
       --retry-connrefused       即使拒绝连接也是重试。
  -O,  --output-document=FILE    将文档写入 FILE。
  -nc, --no-clobber              不要重复下载已存在的文件。
                                 
  -c,  --continue                继续下载部分下载的文件。
       --progress=TYPE           选择进度条类型。
  -N,  --timestamping            只获取比本地文件新的文件。
                                 
  -S,  --server-response         打印服务器响应。
       --spider                  不下载任何文件。
  -T,  --timeout=SECONDS         将所有超时设为 SECONDS 秒。
       --dns-timeout=SECS        设置 DNS 查寻超时为 SECS 秒。
       --connect-timeout=SECS    设置连接超时为 SECS 秒。
       --read-timeout=SECS       设置读取超时为 SECS 秒。
  -w,  --wait=SECONDS            等待间隔为 SECONDS 秒。
       --waitretry=SECONDS       在取回文件的重试期间等待 1..SECONDS 秒。
       --random-wait             取回时等待 0...2*WAIT 秒。
       --no-proxy                关闭代理。
  -Q,  --quota=NUMBER            设置取回配额为 NUMBER 字节。
       --bind-address=ADDRESS    绑定至本地主机上的 ADDRESS (主机名或是 IP)。
       --limit-rate=RATE         限制下载速率为 RATE。
       --no-dns-cache            关闭 DNS 查寻缓存。
       --restrict-file-names=OS  限定文件名中的字符为 OS 允许的字符。
       --ignore-case             匹配文件/目录时忽略大小写。
  -4,  --inet4-only              仅连接至 IPv4 地址。
  -6,  --inet6-only              仅连接至 IPv6 地址。
       --prefer-family=FAMILY    首先连接至指定协议的地址
                                 FAMILY 为 IPv6,IPv4 或是 none。
       --user=USER               将 ftp 和 http 的用户名均设置为 USER。
       --password=PASS           将 ftp 和 http 的密码均设置为 PASS。
       --ask-password           提示输入密码。
       --no-iri                关闭 IRI 支持。
       --local-encoding=ENC      IRI 使用 ENC 作为本地编码。
       --remote-encoding=ENC     使用 ENC 作为默认远程编码。
 
目录:
  -nd, --no-directories           不创建目录。
  -x,  --force-directories        强制创建目录。
  -nH, --no-host-directories      不要创建主目录。
       --protocol-directories     在目录中使用协议名称。
  -P,  --directory-prefix=PREFIX  以 PREFIX/... 保存文件
       --cut-dirs=NUMBER          忽略 NUMBER 个远程目录路径。
 
HTTP 选项:
       --http-user=USER        设置 http 用户名为 USER。
       --http-password=PASS    设置 http 密码为 PASS。
       --no-cache              不在服务器上缓存数据。
       --default-page=NAME     改变默认页
                               (默认页通常是“index.html”)。
  -E,  --adjust-extension      以合适的扩展名保存 HTML/CSS 文档。
       --ignore-length         忽略头部的‘Content-Length’区域。
       --header=STRING         在头部插入 STRING。
       --max-redirect          每页所允许的最大重定向。
       --proxy-user=USER       使用 USER 作为代理用户名。
       --proxy-password=PASS   使用 PASS 作为代理密码。
       --referer=URL           在 HTTP 请求头包含‘Referer: URL’。
       --save-headers          将 HTTP 头保存至文件。
  -U,  --user-agent=AGENT      标识为 AGENT 而不是 Wget/VERSION。
       --no-http-keep-alive    禁用 HTTP keep-alive(永久连接)。
       --no-cookies            不使用 cookies。
       --load-cookies=FILE     会话开始前从 FILE 中载入 cookies。
       --save-cookies=FILE     会话结束后保存 cookies 至 FILE。
       --keep-session-cookies  载入并保存会话(非永久) cookies。
       --post-data=STRING      使用 POST 方式;把 STRING 作为数据发送。
       --post-file=FILE        使用 POST 方式;发送 FILE 内容。
       --content-disposition   当选中本地文件名时
                               允许 Content-Disposition 头部(尚在实验)。
       --auth-no-challenge     send Basic HTTP authentication information
                               without first waiting for the server's
                               challenge.
 
HTTPS (SSL/TLS) 选项:
       --secure-protocol=PR     选择安全协议,可以是 auto、SSLv2、
                                SSLv3 或是 TLSv1 中的一个。
       --no-check-certificate   不要验证服务器的证书。
       --certificate=FILE       客户端证书文件。
       --certificate-type=TYPE  客户端证书类型, PEM 或 DER。
       --private-key=FILE       私钥文件。
       --private-key-type=TYPE  私钥文件类型, PEM 或 DER。
       --ca-certificate=FILE    带有一组 CA 认证的文件。
       --ca-directory=DIR       保存 CA 认证的哈希列表的目录。
       --random-file=FILE       带有生成 SSL PRNG 的随机数据的文件。
       --egd-file=FILE          用于命名带有随机数据的 EGD 套接字的文件。
 
FTP 选项:
       --ftp-user=USER         设置 ftp 用户名为 USER。
       --ftp-password=PASS     设置 ftp 密码为 PASS。
       --no-remove-listing     不要删除‘.listing’文件。
       --no-glob               不在 FTP 文件名中使用通配符展开。
       --no-passive-ftp        禁用“passive”传输模式。
       --retr-symlinks         递归目录时,获取链接的文件(而非目录)。
 
递归下载:
  -r,  --recursive          指定递归下载。
  -l,  --level=NUMBER       最大递归深度( inf 或 0 代表无限制,即全部下载)。
       --delete-after       下载完成后删除本地文件。
  -k,  --convert-links      让下载得到的 HTML 或 CSS 中的链接指向本地文件。
  -K,  --backup-converted   在转换文件 X 前先将它备份为 X.orig。
  -m,  --mirror             -N -r -l inf --no-remove-listing 的缩写形式。
  -p,  --page-requisites    下载所有用于显示 HTML 页面的图片之类的元素。
       --strict-comments    开启 HTML 注释的精确处理(SGML)。
 
递归接受/拒绝:
  -A,  --accept=LIST               逗号分隔的可接受的扩展名列表。
  -R,  --reject=LIST               逗号分隔的要拒绝的扩展名列表。
  -D,  --domains=LIST              逗号分隔的可接受的域列表。
       --exclude-domains=LIST      逗号分隔的要拒绝的域列表。
       --follow-ftp                跟踪 HTML 文档中的 FTP 链接。
       --follow-tags=LIST          逗号分隔的跟踪的 HTML 标识列表。
       --ignore-tags=LIST          逗号分隔的忽略的 HTML 标识列表。
  -H,  --span-hosts                递归时转向外部主机。
  -L,  --relative                  只跟踪有关系的链接。
  -I,  --include-directories=LIST  允许目录的列表。
  --trust-server-names  use the name specified by the redirection url last component.
  -X,  --exclude-directories=LIST  排除目录的列表。
  -np, --no-parent                 不追溯至父目录。
 
请将错误报告或建议寄给 
You have new mail in /var/spool/mail/root
[root@MuBanJi_01 ~]#
 

(3)wget示例

(1)、不带参数的wget

wget可以下载网页或远程文件:

$ wget URL

如果文件名存在则在文件名后添加.{数字}

[root@MuBanJi_01 wget]# wget http://wd.jb51.net:81/201004/books/html5_css3.rar
--2017-09-08 17:40:14--  http://wd.jb51.net:81/201004/books/html5_css3.rar
正在解析主机 wd.jb51.net... 61.160.200.48
正在连接 wd.jb51.net|61.160.200.48|:81... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1445023 (1.4M) [application/octet-stream]
正在保存至: “html5_css3.rar.1”
 
100%[================================================================================>] 1,445,023   1.49M/s   in 0.9s
 
2017-09-08 17:40:15 (1.49 MB/s) - 已保存“html5_css3.rar.1” [1445023/1445023])
 
[root@MuBanJi_01 wget]#

[root@MuBanJi_01 wget]# ll
总用量 105196
-rw-r--r--. 1 root root  1445023 6月  21 2012 html5_css3.rar
-rw-r--r--. 1 root root  1445023 6月  21 2012 html5_css3.rar.1
-rw-r--r--. 1 root root  1445023 6月  21 2012 html5_css3.rar.2
-rw-r--r--. 1 root root 51686763 6月  22 20:26 mysql-5.7.19.tar.gz
-rw-r--r--. 1 root root 51686763 6月  22 20:26 mysql-5.7.19.tar.gz.1
-rw-r--r--. 1 root root     2618 9月   8 17:32 wget-log
[root@MuBanJi_01 wget]#

(2)、带-b参数

-b,  --background        启动后转入后台。

-b参数会使下载动作转入后台运行,默认情况下在前台显示下载进度。

[root@MuBanJi_01 wget]# wget -b https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
继续在后台运行,pid 为 25173。
将把输出写入至“wget-log”。
[root@MuBanJi_01 wget]# ll
总用量 3904
-rw-r--r--. 1 root root 3989403 9月   8 17:44 mysql-5.7.19.tar.gz
-rw-r--r--. 1 root root    6683 9月   8 17:44 wget-log
[root@MuBanJi_01 wget]# ll
总用量 8828
-rw-r--r--. 1 root root 9022491 9月   8 17:44 mysql-5.7.19.tar.gz
-rw-r--r--. 1 root root   14269 9月   8 17:44 wget-log
[root@MuBanJi_01 wget]#

(3)-o选项

-o,  --output-file=FILE    将信息写入 FILE

默认情况下会在屏幕打印下载进度相关信息,-o选项可以使输出信息打进文件里。

wget -o out.txt https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz

(4)-a选项

-a,  --append-output=FILE  将信息添加至 FILE

-a选项会把输出信息追加到指定文件中。-o是清除之前的记录。

wget -a out.txt https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz

(5)-d选项

-d,  --debug               打印大量调试信息。

[root@MuBanJi_01 wget]# wget -d  http://wd.jb51.net:81/201004/books/html5_css3.rar
DEBUG output created by Wget 1.12 on linux-gnu.
 
--2017-09-08 18:01:06--  http://wd.jb51.net:81/201004/books/html5_css3.rar
正在解析主机 wd.jb51.net... 61.160.200.48
Caching wd.jb51.net => 61.160.200.48
正在连接 wd.jb51.net|61.160.200.48|:81... 已连接。
Created socket 3.
Releasing 0x00000000008d2fd0 (new refcount 1).
 
---request begin---
GET /201004/books/html5_css3.rar HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Host: wd.jb51.net:81
Connection: Keep-Alive
 
---request end---
已发出 HTTP 请求,正在等待回应...
---response begin---
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Last-Modified: Thu, 21 Jun 2012 08:00:38 GMT
Accept-Ranges: bytes
ETag: "017d2f1834fcd1:0"
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Fri, 08 Sep 2017 09:59:49 GMT
Connection: keep-alive
Content-Length: 1445023
 
---response end---
200 OK
Registered socket 3 for persistent reuse.
长度:1445023 (1.4M) [application/octet-stream]
正在保存至: “html5_css3.rar.4”
 
100%[================================================================================>] 1,445,023   2.15M/s   in 0.6s
 
2017-09-08 18:01:07 (2.15 MB/s) - 已保存“html5_css3.rar.4” [1445023/1445023])
 
You have new mail in /var/spool/mail/root
[root@MuBanJi_01 wget]#
 
 
 

(6)-q选项

-q,  --quiet               安静模式(无信息输出)

wget -q  http://wd.jb51.net:81/201004/books/html5_css3.rar

(7)-v选项

-v,  --verbose             详尽的输出(此为默认值)

-v和不加输出信息是一样的

(8)-nv选项

-nv,--no-verbose          关闭详尽输出,但不进入安静模式。

$ wget -nv  http://wd.jb51.net:81/201004/books/html5_css3.rar
2017-09-08 18:07:12 URL:http://wd.jb51.net:81/201004/books/html5_css3.rar [1445023/1445023] -> "html5_css3.rar.7" [1]

(9)-i选项

-i,  --input-file=FILE     下载本地或外部 FILE 中的 URLs

将下载地址写入文件url.txt中,批量下载多个url资源文件。

[root@MuBanJi_01 wget]# ll
总用量 4
-rw-r--r--. 1 root root 105 9月   8 18:11 url.txt
[root@MuBanJi_01 wget]# cat url.txt
http://yc.jb51.net:81/201707/books/YAML_cksc_jb51.rar
http://wd.jb51.net:81/201004/books/html5_css3.rar
[root@MuBanJi_01 wget]# wget -i url.txt
--2017-09-08 18:11:31--  http://yc.jb51.net:81/201707/books/YAML_cksc_jb51.rar
正在解析主机 yc.jb51.net... 112.83.192.99
正在连接 yc.jb51.net|112.83.192.99|:81... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:703624 (687K) [application/octet-stream]
正在保存至: “YAML_cksc_jb51.rar”
 
100%[================================================================================>] 703,624     1.91M/s   in 0.4s
 
2017-09-08 18:11:37 (1.91 MB/s) - 已保存“YAML_cksc_jb51.rar” [703624/703624])
 
--2017-09-08 18:11:37--  http://wd.jb51.net:81/201004/books/html5_css3.rar
正在解析主机 wd.jb51.net... 61.160.200.48
正在连接 wd.jb51.net|61.160.200.48|:81... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1445023 (1.4M) [application/octet-stream]
正在保存至: “html5_css3.rar”
 
100%[================================================================================>] 1,445,023   2.03M/s   in 0.7s
 
2017-09-08 18:11:38 (2.03 MB/s) - 已保存“html5_css3.rar” [1445023/1445023])
 
下载完毕 --2017-09-08 18:11:38--
下载了:2 个文件,1.0s (1.99 MB/s) 中的 2.0M
[root@MuBanJi_01 wget]# ll
总用量 2104
-rw-r--r--. 1 root root 1445023 6月  21 2012 html5_css3.rar
-rw-r--r--. 1 root root     105 9月   8 18:11 url.txt
-rw-r--r--. 1 root root  703624 7月  26 17:12 YAML_cksc_jb51.rar
[root@MuBanJi_01 wget]#
 

(10)-O选项

-O,  --output-document=FILE    将文档写入 FILE

通常下载的文件名和URL中的文件名会保持一致,下载日志或进度被写入stdout

你可以通过选项-O指定输出文件名。如果存在同名文件,那么会先将该同名文件清空

truncate)再写入下载文件。

 
$ wget -O wget_html5_css3.rar http://wd.jb51.net:81/201004/books/html5_css3.rar

(11)-nc选项

-nc,--no-clobber              不要重复下载已存在的文件。

[root@MuBanJi_01 wget]# ll
总用量 7116
-rw-r--r--.  1 root root    8478 9月  10 11:39 wget
-rw-r--r--.  1 root root 1445023 6月  21 2012 wget_html5_css3.rar
drwxr-xr-x. 11 root root    4096 8月  28 19:59 zentaopms
-rw-r--r--.  1 root root 5821472 9月   1 14:55 ZenTaoPMS.9.5.stable.zip
[root@MuBanJi_01 wget]# wget -O wget_html5_css3.rar  -nc   http://wd.jb51.net:81/201004/books/html5_css3.rar
文件“wget_html5_css3.rar”已经存在;不取回。
[root@MuBanJi_01 wget]#

(12)-c选项

-c,  --continue                继续下载部分下载的文件。

-c参数,用于断点续传。

如果使用wget进行的下载在完成之前被中断,可以利用选项-c从断点开始继续下载:

$ wget  -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz

(13)-S选项

-S,  --server-response         打印服务器响应。

[root@MuBanJi_01 wget]# wget  -c  -S https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
--2017-09-10 11:51:12--  https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
正在解析主机 dev.mysql.com... 137.254.60.11
正在连接 dev.mysql.com|137.254.60.11|:443... 已连接。
已发出 HTTP 请求,正在等待回应...
  HTTP/1.1 302 Found
  Date: Sun, 10 Sep 2017 03:51:13 GMT
  Server: Apache
  X-Frame-Options: SAMEORIGIN
  Strict-Transport-Security: max-age=15768000
  Set-Cookie: MySQL_S=8fi094bnmesvt5qutla8gds0nv9nd5ro; path=/; domain=mysql.com; HttpOnly
  Expires: Thu, 19 Nov 1981 08:52:00 GMT
  Cache-Control: no-store, no-cache, must-revalidate
  Pragma: no-cache
  Location: https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
  X-XSS-Protection: 1; mode=block
  X-Content-Type-Options: nosniff
  Content-Length: 0
  Keep-Alive: timeout=5, max=10
  Connection: Keep-Alive
  Content-Type: text/html; charset=UTF-8
位置:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19.tar.gz [跟随至新的 URL]
--2017-09-10 11:51:13--  https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
正在解析主机 cdn.mysql.com... 23.66.88.225
正在连接 cdn.mysql.com|23.66.88.225|:443... 已连接。
已发出 HTTP 请求,正在等待回应...
  HTTP/1.0 200 OK
  Server: Apache
  ETag: "03cfd5d2054339851884e5678df0550e:1500210960"
  Last-Modified: Thu, 22 Jun 2017 12:26:34 GMT
  Accept-Ranges: bytes
  Content-Length: 51686763
  Date: Sun, 10 Sep 2017 03:51:13 GMT
  Connection: keep-alive
  Content-Type: application/x-tar-gz
长度:51686763 (49M) [application/x-tar-gz]
正在保存至: “mysql-5.7.19.tar.gz”
 
85% [===================================================================>             ] 43,939,891  13.9M/s eta(英国中部时92% [==========================================================================>      ] 47,873,443  14.1M/s eta(英国中部时100%[================================================================================>] 51,686,763  14.3M/s   in 3.4s
 
2017-09-10 11:51:17 (14.3 MB/s) - 已保存“mysql-5.7.19.tar.gz” [51686763/51686763])
 
[root@MuBanJi_01 wget]#
 

(14)-t选项

-t,  --tries=NUMBER            设置重试次数为 NUMBER (0 代表无限制)

由于不稳定的互联网连接,下载有可能被迫中断。我们可以将重试次数作为命令参数,这样一旦下载中断,wget在放弃之前还会继续进行多次尝试。

-t指定重试次数:

$ wget -t 5 URL

或者要求wget不停地进行重试:

$ wget -t 0 URL

(15)、下载限速

--limit-rate=RATE         限制下载速率为 RATE

当我们的下载带宽有限,却又有多个应用程序共享互联网连接时,进行大文件下载往往会榨干所有的带宽,严重阻滞其他进程。wget命令有一个内建的选项可以限定下载任务能够占有的最大带宽,从而保证其他应用程序流畅运行。

我们可以按照下面的方式使用--limit-ratewget进行限速:

$ wget --limit-rate 20k http://example.com/file.iso

在命令中用k(千字节)和m(兆字节)指定速度限制。

下面的示例,下载速度限制200k,还是很准的。

 
wget  --limit-rate 200k https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
--2017-09-10 12:01:54--  https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
正在解析主机 dev.mysql.com... 137.254.60.11
正在连接 dev.mysql.com|137.254.60.11|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19.tar.gz [跟随至新的 URL]
--2017-09-10 12:01:56--  https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
正在解析主机 cdn.mysql.com... 23.66.88.225
正在连接 cdn.mysql.com|23.66.88.225|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:51686763 (49M) [application/x-tar-gz]
正在保存至: “mysql-5.7.19.tar.gz.1”
 
 1% [>                                                                                ] 670,819      200K/s eta(英国中部时 1% [>                                                                                ] 727,827      200K/s eta(英国中部时 1% [>                                                                                ] 784,835      200K/s eta(英国中部时 1% [>                                                                                ] 841,843      200K/s eta(英国中部时 1% [>                                                                                ] 898,851      200K/s eta(英国中部时 1% [>                                                                                ] 955,859      200K/s eta(英国中部时
 
 

(16)、设置最大下载配额

-Q,  --quota=NUMBER            设置取回配额为 NUMBER 字节。

指定最大下载配额(quota)。配额一旦用尽,下载随之停止。在下载多个文件时,对总下载量进行限制是有必要的,这能够避免在无意中占用过多磁盘空间。

使用--quota-Q选项:

$ wget -Q 100m http://example.com/file1 http://example.com/file2

(17)、复制整个网站(镜像)

wget有一个选项可以使其像爬虫一样以递归的方式遍历网页上所有的URL链接,并逐个下载。这样一来,我们就能够获得一个网站的所有页面。

要实现这个任务,可以按照下面的方式使用选项--mirror

$ wget --mirror --convert-links http://exampledomain.com

提示:

对网站进行镜像时,请三思而行。除非你被许可,否则只应出于个人使用的目的才可以这么做,而且不应该频繁地进行。

(18)、访问需要认证的HTTPFTP页面

一些网页需要HTTPFTP认证,可以用--user--password提供认证信息:

$ wget --user username --password pass URL

也可以不在命令行中指定密码,而由网页提示并手动输入密码,这就需要将--password改为--ask-password