linux wget 命令用法详解(附实例说明)

来源:http://www.jb51.net/LINUXjishu/86326.html

Linux wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器。这样既浪费时间又浪费精力,那不没办法的事。而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步。wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来方便简单。下面我们以实例的形式说明怎么使用wget。 

  1. 命令格式:   
  2. wget [参数列表] [目标软件、网页的网址]             //  用法: wget [选项]... [URL]...  
  3.   
  4. 长选项所必须的参数在使用短选项时也是必须的。  
  5.   
  6. 启动:  
  7.   -V,  --version                   显示 Wget 的版本信息并退出  
  8.   -h,  --help                      打印此帮助  
  9.   -b,  --background                启动后转入后台  
  10.   -e,  --execute=命令              运行一个“.wgetrc”风格的命令  
  11.   
  12. 日志和输入文件:  
  13.   -o,  --output-file=文件          将日志信息写入 FILE  
  14.   -a,  --append-output=文件        将信息添加至 FILE  
  15.   -d,  --debug                     打印大量调试信息  
  16.   -q,  --quiet                     安静模式 (无信息输出)  
  17.   -v,  --verbose                   详尽的输出 (此为默认值)  
  18.   -nv, --no-verbose                关闭详尽输出,但不进入安静模式  
  19.        --report-speed=类型         以 <类型> 报告带宽。类型可以是 bits  
  20.   -i,  --input-file=文件           下载本地或外部 <文件> 中的 URL  
  21.   -F,  --force-html                把输入文件当成 HTML 文件  
  22.   -B,  --base=URL                  解析相对于 URL 的 HTML 输入文件链接 (-i -F)  
  23.        --config=文件               指定要使用的配置文件  
  24.        --no-cookies                不读取任何配置文件  
  25.        --rejected-log=文件         将拒绝 URL 的原因写入 <文件>。  
  26.   
  27. 下载:  
  28.   -t,  --tries=数字                设置重试次数为 <数字> (0 代表无限制)  
  29.        --retry-connrefused         即使拒绝连接也是重试  
  30.   -O,  --output-document=文件      将文档写入 FILE  
  31.   -nc, --no-clobber                不要下载已存在将被覆盖的文件  
  32.   -c,  --continue                  断点续传下载文件  
  33.        --start-pos=偏移量          从由零计数的 <偏移量> 开始下载  
  34.        --progress=类型             选择进度条类型  
  35.        --show-progress             在任意啰嗦状态下都显示进度条  
  36.   -N,  --timestamping              只获取比本地文件新的文件  
  37.        --no-if-modified-since      不要在时间戳 (timestamping) 模式下使用  
  38.                                      if-modified-since get 条件请求  
  39.        --no-use-server-timestamps  don't set the local file's timestamp by  
  40.                                      the one on the server  
  41.   -S,  --server-response           打印服务器响应  
  42.        --spider                    不下载任何文件  
  43.   -T,  --timeout=SECONDS           将所有超时设为 SECONDS 秒  
  44.        --dns-timeout=SECS          设置 DNS 查寻超时为 SECS 秒  
  45.        --connect-timeout=SECS      设置连接超时为 SECS 秒  
  46.        --read-timeout=SECS         设置读取超时为 SECS 秒  
  47.   -w,  --wait=SECONDS              等待间隔为 SECONDS 秒  
  48.        --waitretry=SECONDS         在获取文件的重试期间等待 1..SECONDS 秒  
  49.        --random-wait               获取多个文件时,每次随机等待间隔 (0.5~1.5)*WAIT 秒  
  50.        --no-proxy                  禁止使用代理  
  51.   -Q,  --quota=数字                设置获取配额为 <数字> 字节  
  52.        --bind-address=ADDRESS      绑定至本地主机上的 ADDRESS (主机名或是 IP)  
  53.        --limit-rate=RATE           限制下载速率为 RATE  
  54.        --no-dns-cache              关闭 DNS 查询缓存  
  55.        --restrict-file-names=系统  限定文件名中的字符为 <系统> 允许的字符  
  56.        --ignore-case               匹配文件/目录时忽略大小写  
  57.   -4,  --inet4-only                仅连接至 IPv4 地址  
  58.   -6,  --inet6-only                仅连接至 IPv6 地址  
  59.        --prefer-family=地址族      首先连接至指定家族(IPv6,IPv4 或 none)的地址  
  60.        --user=用户                 将 ftp 和 http 的用户名均设置为 <用户>  
  61.        --password=密码             将 ftp 和 http 的密码均设置为 <密码>  
  62.        --ask-password              提示输入密码  
  63.        --no-iri                    关闭 IRI 支持  
  64.        --local-encoding=ENC        使用 ENC 作为 IRI (国际化资源标识符) 的本地编码  
  65.        --remote-encoding=ENC       使用 ENC 作为默认远程编码  
  66.        --unlink                    覆盖前移除文件  
  67.   
  68. 目录:  
  69.   -nd, --no-directories            不创建目录  
  70.   -x,  --force-directories         强制创建目录  
  71.   -nH, --no-host-directories       不要创建主 (host) 目录  
  72.        --protocol-directories      在目录中使用协议名称  
  73.   -P,  --directory-prefix=前缀     保存文件到 <前缀>/..  
  74.        --cut-dirs=数字             忽略远程目录中 <数字> 个目录层。  
  75.   
  76. HTTP 选项:  
  77.        --http-user=用户            设置 http 用户名为 <用户>  
  78.        --http-password=密码        设置 http 密码为 <密码>  
  79.        --no-cache                  不使用服务器缓存的数据。  
  80.        --default-page=NAME         改变默认页 (通常是“index.html”)。  
  81.   -E,  --adjust-extension          以合适的扩展名保存 HTML/CSS 文档  
  82.        --ignore-length             忽略头部的‘Content-Length’区域  
  83.        --header=字符串             在头部插入 <字符串>  
  84.        --max-redirect              每页所允许的最大重定向  
  85.        --proxy-user=用户           使用 <用户> 作为代理用户名  
  86.        --proxy-password=密码       使用 <密码> 作为代理密码  
  87.        --referer=URL               在 HTTP 请求头包含‘Referer: URL’  
  88.        --save-headers              将 HTTP 头保存至文件。  
  89.   -U,  --user-agent=代理           标识自己为 <代理> 而不是 Wget/VERSION。  
  90.        --no-http-keep-alive        禁用 HTTP keep-alive (持久连接)。  
  91.        --no-cookies                不使用 cookies。  
  92.        --load-cookies=文件         会话开始前从 <文件> 中载入 cookies。  
  93.        --save-cookies=文件         会话结束后保存 cookies 至 FILE。  
  94.        --keep-session-cookies      载入并保存会话 (非永久) cookies。  
  95.        --post-data=字符串          使用 POST 方式;把 <字串>作为数据发送。  
  96.        --post-file=文件            使用 POST 方式;发送 <文件> 内容。  
  97.        --method=HTTP方法           在请求中使用指定的 <HTTP 方法>。  
  98.        --post-data=字符串          把 <字串> 作为数据发送,必须设置 --method  
  99.        --post-file=文件            发送 <文件> 内容,必须设置 --method  
  100.        --content-disposition       当选择本地文件名时允许 Content-Disposition  
  101.                                    头部 (实验中)。  
  102.        --content-on-error          在服务器错误时输出接收到的内容  
  103.        --auth-no-challenge         不先等待服务器询问就发送基本 HTTP 验证信息。  
  104.   
  105. HTTPS (SSL/TLS) 选项:  
  106.        --secure-protocol=PR         选择安全协议,可以是 auto、SSLv2、  
  107.                                     SSLv3、TLSv1、PFS 中的一个。  
  108.        --https-only                 只跟随安全的 HTTPS 链接  
  109.        --no-check-certificate       不要验证服务器的证书。  
  110.        --certificate=文件           客户端证书文件。  
  111.        --certificate-type=类型      客户端证书类型,PEM 或 DER。  
  112.        --private-key=文件           私钥文件。  
  113.        --private-key-type=类型      私钥文件类型,PEM 或 DER。  
  114.        --ca-certificate=文件        带有一组 CA 证书的文件。  
  115.        --ca-directory=DIR           保存 CA 证书的哈希列表的目录。  
  116.        --ca-certificate=文件        带有一组 CA 证书的文件。  
  117.        --pinnedpubkey=FILE/HASHES  Public key (PEM/DER) file, or any number  
  118.                                    of base64 encoded sha256 hashes preceded by  
  119.                                    'sha256//' and seperated by ';', to verify  
  120.                                    peer against  
  121.   
  122. HSTS 选项:  
  123.        --no-hsts                   禁用 HSTS  
  124.        --hsts-file                 HSTS 数据库路径(将覆盖默认值)  
  125.   
  126. FTP 选项:  
  127.        --ftp-user=用户             设置 ftp 用户名为 <用户>。  
  128.        --ftp-password=密码         设置 ftp 密码为 <密码>  
  129.        --no-remove-listing         不要删除‘.listing’文件  
  130.        --no-glob                   不在 FTP 文件名中使用通配符展开  
  131.        --no-passive-ftp            禁用“passive”传输模式  
  132.        --preserve-permissions      保留远程文件的权限  
  133.        --retr-symlinks             递归目录时,获取链接的文件 (而非目录)  
  134.   
  135. FTPS 选项:  
  136.        --ftps-implicit                 使用隐式 FTPS(默认端口 990)  
  137.        --ftps-resume-ssl               打开数据连接时继续控制连接中的 SSL/TLS 会话  
  138.        --ftps-clear-data-connection    只加密控制信道;数据传输使用明文  
  139.        --ftps-fallback-to-ftp          回落到 FTP,如果目标服务器不支持 FTPS  
  140. WARC 选项:  
  141.        --warc-file=文件名          在一个 .warc.gz 文件里保持请求/响应数据  
  142.        --warc-header=字符串        在头部插入 <字符串>  
  143.        --warc-max-size=数字        将 WARC 的最大尺寸设置为 <数字>  
  144.        --warc-cdx                  写入 CDX 索引文件  
  145.        --warc-dedup=文件名         不要记录列在此 CDX 文件内的记录  
  146.        --no-warc-compression       不要 GZIP 压缩 WARC 文件  
  147.        --no-warc-digests           不要计算 SHA1 摘要  
  148.        --no-warc-keep-log          不要在 WARC 记录中存储日志文件  
  149.        --warc-tempdir=目录         WARC 写入器的临时文件目录  
  150.   
  151. 递归下载:  
  152.   -r,  --recursive                 指定递归下载  
  153.   -l,  --level=数字                最大递归深度 (inf 或 0 代表无限制,即全部下载)。  
  154.        --delete-after             下载完成后删除本地文件  
  155.   -k,  --convert-links            让下载得到的 HTML 或 CSS 中的链接指向本地文件  
  156.        --convert-file-only         convert the file part of the URLs only (usually known as the basename)  
  157.        --backups=N                 写入文件 X 前,轮换移动最多 N 个备份文件  
  158.   -K,  --backup-converted         在转换文件 X 前先将它备份为 X.orig。  
  159.   -m,  --mirror                   -N -r -l inf --no-remove-listing 的缩写形式。  
  160.   -p,  --page-requisites          下载所有用于显示 HTML 页面的图片之类的元素。  
  161.        --strict-comments          用严格方式 (SGML) 处理 HTML 注释。  
  162.   
  163. 递归接受/拒绝:  
  164.   -A,  --accept=列表               逗号分隔的可接受的扩展名列表  
  165.   -R,  --reject=列表               逗号分隔的要拒绝的扩展名列表  
  166.        --accept-regex=REGEX        匹配接受的 URL 的正则表达式  
  167.        --reject-regex=REGEX        匹配拒绝的 URL 的正则表达式  
  168.        --regex-type=类型           正则类型 (posix|pcre)  
  169.   -D,  --domains=列表              逗号分隔的可接受的域名列表  
  170.        --exclude-domains=列表      逗号分隔的要拒绝的域名列表  
  171.        --follow-ftp                跟踪 HTML 文档中的 FTP 链接  
  172.        --follow-tags=列表          逗号分隔的跟踪的 HTML 标识列表  
  173.        --ignore-tags=列表          逗号分隔的忽略的 HTML 标识列表  
  174.   -H,  --span-hosts                递归时转向外部主机  
  175.   -L,  --relative                  仅跟踪相对链接  
  176.   -I,  --include-directories=列表  允许目录的列表  
  177.        --trust-server-names        使用重定向 URL 的最后一段作为本地文件名  
  178.   -X,  --exclude-directories=列表  排除目录的列表  
  179.   -np, --no-parent                 不追溯至父目录  

1、使用wget下载单个文件 

  1. 以下的例子是从网络下载一个文件并保存在当前目录   
  2. wget http://cn.wordpress.org/wordpress-3.1-zh_CN.zip   
  3. 在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。   

2、使用wget -O下载并以不同的文件名保存 

  1. wget默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。   
  2. 错误:下面的例子会下载一个文件并以名称download.php?id=1080保存   
  3.   
  4. wget http://www.centos.bz/download?id=1   
  5. 即使下载的文件是zip格式,它仍然以download.php?id=1080命令。   
  6. 正确:为了解决这个问题,我们可以使用参数-O来指定一个文件名:   
  7.   
  8. wget -O wordpress.zip http://www.centos.bz/download.php?id=1080   

3、使用wget –limit -rate限速下载 

  1. 当你执行wget的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。   
  2.   
  3. wget –limit-rate=300k http://cn.wordpress.org/wordpress-3.1-zh_CN.zip   

4、使用wget -c断点续传 

  1. 使用wget -c重新启动下载中断的文件:   
  2.   
  3. wget -c http://cn.wordpress.org/wordpress-3.1-zh_CN.zip   
  4. 对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用-c参数。   

5、使用wget -b后台下载 

  1. 对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载。   
  2.   
  3. wget -b http://cn.wordpress.org/wordpress-3.1-zh_CN.zip   
  4. Continuing in background, pid 1840.   
  5. Output will be written to `wget-log’.   
  6. 你可以使用以下命令来察看下载进度   
  7.   
  8. tail -f wget-log   

6、伪装代理名称下载 

  1. 有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。   
  2.   
  3. wget –user-agent=”Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16″ 下载链接   

7、使用wget –spider测试下载链接 

  1. 当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加–spider参数进行检查。   
  2.   
  3. wget –spider URL   
  4. 如果下载链接正确,将会显示   
  5.   
  6. wget –spider URL   
  7. Spider mode enabled. Check if remote file exists.   
  8. HTTP request sent, awaiting response… 200 OK   
  9. Length: unspecified [text/html]   
  10. Remote file exists and could contain further links,   
  11. but recursion is disabled — not retrieving.   
  12. 这保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误   
  13.   
  14. wget –spider url   
  15. Spider mode enabled. Check if remote file exists.   
  16. HTTP request sent, awaiting response… 404 Not Found   
  17. Remote file does not exist — broken link!!!   
  18. 你可以在以下几种情况下使用spider参数:   
  19.   
  20. 定时下载之前进行检查   
  21. 间隔检测网站是否可用   
  22. 检查网站页面的死链接   

8、使用wget –tries增加重试次数 

  1. 如果网络有问题或下载一个大文件也有可能失败。wget默认重试20次连接下载文件。如果需要,你可以使用–tries增加重试次数。   
  2.   
  3. wget –tries=40 URL   

9、使用wget -i下载多个文件 

  1. 首先,保存一份下载链接文件   
  2.   
  3. cat > filelist.txt   
  4. url1   
  5. url2   
  6. url3   
  7. url4   
  8. 接着使用这个文件和参数-i下载   
  9.   
  10. wget -i filelist.txt   

10、使用wget –mirror镜像网站 

  1. 下面的例子是下载整个网站到本地。   
  2.   
  3. wget –mirror -p –convert-links -P ./LOCAL URL   
  4. –miror:开户镜像下载   
  5. -p:下载所有为了html页面显示正常的文件   
  6. –convert-links:下载后,转换成本地的链接   
  7. -P ./LOCAL:保存所有文件和目录到本地指定目录   

11、使用wget –reject过滤指定格式下载 

  1. 你想下载一个网站,但你不希望下载图片,你可以使用以下命令。   
  2.   
  3. wget –reject=gif url   

12、使用wget -o把下载信息存入日志文件 

  1. 你不希望下载信息直接显示在终端而是在一个日志文件,可以使用以下命令:   
  2.   
  3. wget -o download.log URL   

13、使用wget -Q限制总下载文件大小 

  1. 当你想要下载的文件超过5M而退出下载,你可以使用以下命令:   
  2.   
  3. wget -Q5m -i filelist.txt   
  4. 注意:这个参数对单个文件下载不起作用,只能递归下载时才有效。   

14、使用wget -r -A下载指定格式文件 

  1. 可以在以下情况使用该功能   
  2.   
  3. 下载一个网站的所有图片   
  4. 下载一个网站的所有视频   
  5. 下载一个网站的所有PDF文件   
  6. wget -r -A.pdf url   

15、使用wget FTP下载 

  1. 你可以使用wget来完成ftp链接的下载。   
  2. 使用wget匿名ftp下载   
  3.   
  4. wget ftp-url   
  5.   
  6. 使用wget用户名和密码认证的ftp下载   
  7.   
  8. wget –ftp-user=USERNAME –ftp-password=PASSWORD url  



wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。它有以下功能和特点: 

  1. (1)支持断点下传功能;这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了;   
  2. (2)同时支持FTP和HTTP下载方式;尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候,仍然需要使用FTP方式下载软件;   
  3. (3)支持代理服务器;对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互联网上,所以,支持代理是下载软件必须有的功能;   
  4. (4)设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标;   
  5. (5)程序小,完全免费;程序小可以考虑不计,因为现在的硬盘实在太大了;完全免费就不得不考虑了,即使网络上有很多免费软件,但是,这些软件的广告不是我们喜欢的;  

wget虽然功能强大,但是使用起来还是比较简单的,基本的语法是:wget [参数列表] URL。下面就结合具体的例子来说明一下wget的用法。 

1、下载整个http或者ftp站点。 

  1. wget http://place.your.url/here   
  2. 这个命令可以将http://place.your.url/here 首页下载下来。使用-x会强制建立服务器上一模一样的目录,如果使用-nd参数,那么服务器上下载的所有内容都会加到本地当前目录。   
  3.   
  4. wget -r http://place.your.url/here   
  5. 这 个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址同 样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!基于这个原因,这个参数不常用。可以用-l number参数来指定下载的层次。例如只下载两层,那么使用-l 2。   
  6.   
  7. 要是您想制作镜像站点,那么可以使用-m参数,例如:wget -m http://place.your.url/here   
  8. 这时wget会自动判断合适的参数来制作镜像站点。此时,wget会登录到服务器上,读入robots.txt并按robots.txt的规定来执行。   

2、断点续传。 

  1. 当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。wget的断点续传是自动的,只需要使用-c参数,例如:   
  2. wget -c http://the.url.of/incomplete/file   
  3. 使用断点续传要求服务器支持断点续传。-t参数表示重试次数,例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功。-T参数表示超时等待时间,例如-T 120,表示等待120秒连接不上就算超时。   

3、批量下载。 

  1. 如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行,例如生成文件download.txt,然后用命令:wget -i download.txt   
  2. 这样就会把download.txt里面列出的每个URL都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)   

4、选择性的下载。 

  1. 可以指定让wget只下载一类文件,或者不下载什么文件。例如:   
  2. wget -m –reject=gif http://target.web.site/subdirectory   
  3. 表示下载http://target.web.site/subdirectory,但是忽略gif文件。–accept=LIST 可以接受的文件类型,–reject=LIST拒绝接受的文件类型。  

5、密码和认证。 

  1. wget只能处理利用用户名/密码方式限制访问的网站,可以利用两个参数:   
  2. –http-user=USER设置HTTP用户   
  3. –http-passwd=PASS设置HTTP密码   
  4. 对于需要证书做认证的网站,就只能利用其他下载工具了,例如curl。   

6、利用代理服务器进行下载。 

  1. 如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个.wgetrc文件。文件中可以设置代理服务器:   
  2. http-proxy = 111.111.111.111:8080   
  3. ftp-proxy = 111.111.111.111:8080   
  4. 分别表示http的代理服务器和ftp的代理服务器。如果代理服务器需要密码则使用:   
  5. –proxy-user=USER设置代理用户   
  6. –proxy-passwd=PASS设置代理密码   
  7. 这两个参数。   
  8. 使用参数–proxy=on/off 使用或者关闭代理。   
  9. wget还有很多有用的功能,需要用户去挖掘。   

中文文档名在平常的情况下会被编码, 但是在 –cut-dirs 时又是正常的, 
wget -r -np -nH –cut-dirs=3 ftp://host/test/ 
测试.txt 
wget -r -np -nH -nd ftp://host/test/ 
%B4%FA%B8%D5.txt 
wget “ftp://host/test/*” 
%B4%FA%B8%D5.txt 

由 於不知名的原因,可能是为了避开特殊档名, wget 会自动将抓取档名的部分用 encode_string 处理过, 所以该 patch 就把被 encode_string 处理成 “%3A” 这种东西, 用 decode_string 还原成 “:”,并套用在目录与档案名称的部分,decode_string 是 wget 内建的函式。 

wget -t0 -c -nH -x -np -b -m -P /home/sunny/NOD32view/ http://downloads1.kaspersky-labs.com/bases/ -o wget.log

posted @ 2018-01-25 23:43  yanzi_meng  阅读(962)  评论(0编辑  收藏  举报