Linux Shell学习--wget命令详解
(1)、wget介绍wget是一个用于文件下载的命令行工具,选项繁多且用法灵活。
(2)、wget的help
# wget --helpGNU Wget 1.12,非交互式的网络文件下载工具。用法: wget [选项]... ...长选项所必须的参数在使用短选项时也是必须的。开始:-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-namesuse 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# (3)、wget示例
(1)、不带参数的wget
用wget可以下载网页或远程文件:
$ wget URL 如果文件名存在则在文件名后添加.{数字}
# wget http://wd.iyunv.net:81/201004/books/html5_css3.rar--2017-09-08 17:40:14--http://wd.iyunv.net:81/201004/books/html5_css3.rar正在解析主机 wd.iyunv.net... 61.160.200.48正在连接 wd.iyunv.net|61.160.200.48|:81... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度:1445023 (1.4M) 正在保存至: “html5_css3.rar.1”100%[================================================================================>] 1,445,023 1.49M/s in 0.9s2017-09-08 17:40:15 (1.49 MB/s) - 已保存“html5_css3.rar.1” )## ll总用量 105196-rw-r--r--. 1 root root1445023 6月21 2012 html5_css3.rar-rw-r--r--. 1 root root1445023 6月21 2012 html5_css3.rar.1-rw-r--r--. 1 root root1445023 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# (2)、带-b参数
-b,--background 启动后转入后台。
-b参数会使下载动作转入后台运行,默认情况下在前台显示下载进度。
# wget -b https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz继续在后台运行,pid 为 25173。将把输出写入至“wget-log”。# 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# 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# (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 打印大量调试信息。
# wget -dhttp://wd.iyunv.net:81/201004/books/html5_css3.rarDEBUG output created by Wget 1.12 on linux-gnu.--2017-09-08 18:01:06--http://wd.iyunv.net:81/201004/books/html5_css3.rar正在解析主机 wd.iyunv.net... 61.160.200.48Caching wd.iyunv.net => 61.160.200.48正在连接 wd.iyunv.net|61.160.200.48|:81... 已连接。Created socket 3.Releasing 0x00000000008d2fd0 (new refcount 1).---request begin---GET /201004/books/html5_css3.rar HTTP/1.0User-Agent: Wget/1.12 (linux-gnu)Accept: */*Host: wd.iyunv.net:81Connection: Keep-Alive---request end---已发出 HTTP 请求,正在等待回应...---response begin---HTTP/1.1 200 OKContent-Type: application/octet-streamLast-Modified: Thu, 21 Jun 2012 08:00:38 GMTAccept-Ranges: bytesETag: "017d2f1834fcd1:0"Server: Microsoft-IIS/7.5X-Powered-By: ASP.NETDate: Fri, 08 Sep 2017 09:59:49 GMTConnection: keep-aliveContent-Length: 1445023---response end---200 OKRegistered socket 3 for persistent reuse.长度:1445023 (1.4M) 正在保存至: “html5_css3.rar.4”100%[================================================================================>] 1,445,023 2.15M/s in 0.6s2017-09-08 18:01:07 (2.15 MB/s) - 已保存“html5_css3.rar.4” )You have new mail in /var/spool/mail/root# (6)、-q选项
-q,--quiet 安静模式(无信息输出)。
wget -qhttp://wd.iyunv.net:81/201004/books/html5_css3.rar (7)、-v选项
-v,--verbose 详尽的输出(此为默认值)。
加-v和不加输出信息是一样的
(8)、-nv选项
-nv,--no-verbose 关闭详尽输出,但不进入安静模式。
$ wget -nvhttp://wd.iyunv.net:81/201004/books/html5_css3.rar2017-09-08 18:07:12 URL:http://wd.iyunv.net:81/201004/books/html5_css3.rar -> "html5_css3.rar.7" (9)、-i选项
-i,--input-file=FILE 下载本地或外部 FILE 中的 URLs。
将下载地址写入文件url.txt中,批量下载多个url资源文件。
# ll总用量 4-rw-r--r--. 1 root root 105 9月 8 18:11 url.txt# cat url.txthttp://yc.iyunv.net:81/201707/books/YAML_cksc_iyunv.rarhttp://wd.iyunv.net:81/201004/books/html5_css3.rar# wget -i url.txt--2017-09-08 18:11:31--http://yc.iyunv.net:81/201707/books/YAML_cksc_iyunv.rar正在解析主机 yc.iyunv.net... 112.83.192.99正在连接 yc.iyunv.net|112.83.192.99|:81... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度:703624 (687K) 正在保存至: “YAML_cksc_iyunv.rar”100%[================================================================================>] 703,624 1.91M/s in 0.4s2017-09-08 18:11:37 (1.91 MB/s) - 已保存“YAML_cksc_iyunv.rar” )--2017-09-08 18:11:37--http://wd.iyunv.net:81/201004/books/html5_css3.rar正在解析主机 wd.iyunv.net... 61.160.200.48正在连接 wd.iyunv.net|61.160.200.48|:81... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度:1445023 (1.4M) 正在保存至: “html5_css3.rar”100%[================================================================================>] 1,445,023 2.03M/s in 0.7s2017-09-08 18:11:38 (2.03 MB/s) - 已保存“html5_css3.rar” )下载完毕 --2017-09-08 18:11:38--下载了:2 个文件,1.0s (1.99 MB/s) 中的 2.0M# 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 root703624 7月26 17:12 YAML_cksc_iyunv.rar# (10)、-O选项
-O,--output-document=FILE 将文档写入 FILE。
通常下载的文件名和URL中的文件名会保持一致,下载日志或进度被写入stdout。
你可以通过选项-O指定输出文件名。如果存在同名文件,那么会先将该同名文件清空
(truncate)再写入下载文件。
$ wget -O wget_html5_css3.rar http://wd.iyunv.net:81/201004/books/html5_css3.rar (11)、-nc选项
-nc,--no-clobber 不要重复下载已存在的文件。
# 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.rardrwxr-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# wget -O wget_html5_css3.rar-nc http://wd.iyunv.net:81/201004/books/html5_css3.rar文件“wget_html5_css3.rar”已经存在;不取回。# (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 打印服务器响应。
# 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 FoundDate: Sun, 10 Sep 2017 03:51:13 GMTServer: ApacheX-Frame-Options: SAMEORIGINStrict-Transport-Security: max-age=15768000Set-Cookie: MySQL_S=8fi094bnmesvt5qutla8gds0nv9nd5ro; path=/; domain=mysql.com; HttpOnlyExpires: Thu, 19 Nov 1981 08:52:00 GMTCache-Control: no-store, no-cache, must-revalidatePragma: no-cacheLocation: https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19.tar.gzX-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniffContent-Length: 0Keep-Alive: timeout=5, max=10Connection: Keep-AliveContent-Type: text/html; 位置: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 OKServer: ApacheETag: "03cfd5d2054339851884e5678df0550e:1500210960"Last-Modified: Thu, 22 Jun 2017 12:26:34 GMTAccept-Ranges: bytesContent-Length: 51686763Date: Sun, 10 Sep 2017 03:51:13 GMTConnection: keep-aliveContent-Type: application/x-tar-gz长度:51686763 (49M) 正在保存至: “mysql-5.7.19.tar.gz”85% [===================================================================> ] 43,939,89113.9M/s eta(英国中部时92% [==========================================================================> ] 47,873,44314.1M/s eta(英国中部时100%[================================================================================>] 51,686,76314.3M/s in 3.4s2017-09-10 11:51:17 (14.3 MB/s) - 已保存“mysql-5.7.19.tar.gz” )# (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) 正在保存至: “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。
页:
[1]