(1)、wget介绍
wget是一个用于文件下载的命令行工具,选项繁多且用法灵活。
(2)、wget的help
[[email protected]_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 不追溯至父目录。
请将错误报告或建议寄给 <[email protected]>。
You have new mail in /var/spool/mail/root
[[email protected]_01 ~]#
(3)、wget示例
(1)、不带参数的wget
用wget可以下载网页或远程文件:
$ wget URL
如果文件名存在则在文件名后添加.{数字}
[[email protected]_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])
[[email protected]_01 wget]#
[[email protected]_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
[[email protected]_01 wget]#
(2)、带-b参数
-b, --background 启动后转入后台。
-b参数会使下载动作转入后台运行,默认情况下在前台显示下载进度。
[[email protected]_01 wget]# wget -b https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
继续在后台运行,pid 为 25173。
将把输出写入至“wget-log”。
[[email protected]_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
[[email protected]_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
[[email protected]_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 打印大量调试信息。
[[email protected]_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
[[email protected]_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资源文件。
[[email protected]_01 wget]# ll
总用量 4
-rw-r--r--. 1 root root 105 9月 8 18:11 url.txt
[[email protected]_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
[[email protected]_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
[[email protected]_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
[[email protected]_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 不要重复下载已存在的文件。
[[email protected]_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
[[email protected]_01 wget]# wget -O wget_html5_css3.rar -nc http://wd.jb51.net:81/201004/books/html5_css3.rar
文件“wget_html5_css3.rar”已经存在;不取回。
[[email protected]_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 打印服务器响应。
[[email protected]_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])
[[email protected]_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-rate对wget进行限速:
$ 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)、访问需要认证的HTTP或FTP页面
一些网页需要HTTP或FTP认证,可以用--user和--password提供认证信息:
$ wget --user username --password pass URL
也可以不在命令行中指定密码,而由网页提示并手动输入密码,这就需要将--password改为--ask-password。