zjp0633 发表于 2018-8-22 07:48:09

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]
查看完整版本: Linux Shell学习--wget命令详解