Linux 命令(127)—— wget 命令

1.命令简介

wget 命令是一个非交互式网络下载器,用于从指定 url 下载文件。

wget 是 Linux 环境下流行的强大稳定的下文件下载工具,主要有如下几个特点:
(1)wget 支持的协议丰富,支持 HTTP、HTTPS 和 FTP 协议,可以使用 HTTP 代理;
(2)wget 支持自动下载。wget 是非交互式的,这意味着它可以在后台工作。这意味这你可以登录系统,启动一个 wget 下载任务,然后退出系统,wget 将在后台执行直到任务完成;
(3)wget 支持断点续传,即在下次下载文件时,从已经下载的部分开始继续下载未完成的部分,而没有必要从头开始下载;
(4)wget 对弱网络有很强的适应性,在带宽很窄的情况下和不稳定网络中,如果由于网络的原因下载失败,wget 会不断地尝试,直到整个文件下载完毕。

2.命令格式

wget [OPTION]... [URL]...

3.选项说明

注意,长选项所必须的参数在使用短选项时也是必须的。

基本启动选项
-V,  --version
	显示 wget 的版本信息并退出
-h, --help
	打印帮助
-b, --background
	启动后转入后台执行。如果没有通过 -o 指定输出文件,则将输出重定向到 wget-log
-e,  --execute=COMMAND
	执行命令,就好像命令是 .wgetrc 的一部分一样。命令将在 .wgetrc 中的命令之后执行。如果需要指定多个 .wgetrc 命令,请使用 -e 的多个实例

日志和输入文件选项
-o,  --output-file=LOGFILE
  	将日志信息写入 LOGFILE
-a,  --append-output=LOGFILE
	将日志信息追加至 LOGFILE,而不是覆盖原 LOGFILE
-d, --debug
	打印大量调试信息
-q, --quiet
	安静模式(无信息输出)
-v,  --verbose
	详尽的输出(此为默认设置)
-nv, --no-verbose
	关闭详尽输出,但不进入安静模式。这意味着错误信息和基本信息仍然会被打印出来
-i, --input-file=FILE
	下载本地或外部 FILE 中的 URLs
-F, --force-html
	把输入文件当成 HTML 文件
-B, --base=URL
	将 URL 作为在 -F -i 参数指定的文件中出现的相对链接的前缀

下载选项
--bind-address=ADDRESS
	绑定至本地主机上的 ADDRESS (主机名或是 IP)
-t,  --tries=NUMBER
	设置重试次数为 NUMBER (0 代表无限制)
-O,  --output-document=FILE
	将下载的文档写入 FILE
-nc, --no-clobber
	在同一个目录中下载同一个文件将导致文件的原始副本被保留,第二个副本被命名为 file.1,第三个为 file.2,以此类推
-c,  --continue 
	断点续传下载文件
--progress=TYPE
	选择进度条类型,可取值 dot 和 bar
-N,  --timestamping
	只获取比本地文件新的文件
--no-use-server-timestamps
  	不用服务器上的时间戳来设置本地文件
-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
	在获取文件的重试期间等待 SECONDS 秒
--random-wait
	获取多个文件时,每次随机等待间隔在 0.5*WAIT 至 1.5*WAIT 秒,WAIT 由 -w 选项指定
--no-proxy
	禁止使用代理
-Q, --quota=NUMBER
	设置获取配额为 NUMBER 字节,后缀为 k(千字节)或 m(兆字节)。当下载的文件总大小达到配额后将暂停下载。请注意,配额不会影响下载单个文件。将配额设置为 0 或 inf 不限制下载配额
--limit-rate=RATE
	限制下载速率为 RATE 字节每秒。RATE 可使用后缀 k(千字节)或 m(兆字节)
--no-dns-cache
	关闭 DNS 查寻缓存
--restrict-file-names=MODES
	限定文件名中的字符为 MODES 允许的字符
-4,  --inet4-only
  	仅连接至 IPv4 地址
-6,  --inet6-only
	仅连接至 IPv6 地址
--prefer-family=FAMILY
	首先连接至指定协议的地址。FAMILY 为 IPv6,IPv4 或是 none
--retry-connrefused
	即使拒绝连接也要重试
--user=USER
	将 ftp 和 http 的用户名均设置为 USER
--password=PASS
	将 ftp 和 http 的密码均设置为 PASS
--ask-password
	提示输入密码
--no-iri
	关闭国际化 URI(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
	发送不含服务器询问的首次等待的基本 HTTP 验证信息

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
	不要删除 FTP 检索生成的临时 .list 文件
 --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
	打开适合镜像的选项。此选项打开递归和时间戳,设置无限递归深度,并保留ftp目录列表。等价于 -N -r -l inf --no-remove-listing 选项
-p,  --page-requisites
	下载所有用于显示 HTML 页面的图片之类的元素
--strict-comments
	用严格方式 (SGML) 处理 HTML 注释

递归接受/拒绝选项
-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
	在重定向时,重定向 URL 的最后一个组件将用作本地文件名。默认情况下,它是原始 URL 中的最后一个组件
-X,  --exclude-directories=LIST
	排除目录的列表
-np, --no-parent
	不追溯至父目录
--ignore-case
	匹配文件/目录时忽略大小写

4.常用示例

(1)使用 wget 下载单个文件。比如下载 git for windows

wget https://github.com/git-for-windows/git/releases/download/v2.25.1.windows.1/Git-2.25.1-32-bit.tar.bz2

wget 虽然有很多选项,但是最常用的是不带任何选项,给定文件的 url 进行下载。

(2)下载单个文件,使用指定的文件名保存。

wget -O GitForWindows.tar.bz2 https://github.com/git-for-windows/git/releases/download/v2.25.1.windows.1/Git-2.25.1-32-bit.tar.bz2

(3)使用 wget -b 将 wget 放在后台执行。

wget -b https://github.com/git-for-windows/git/releases/download/v2.25.1.windows.1/Git-2.25.1-32-bit.tar.bz2
Continuing in background, pid 9369.
Output will be written to 'wget-log'.

对于下载非常大的文件的时候,我们可以使用参数 -b 进行后台下载,可以使用命令tail -f wget-log查看 wget 的日志文件 wget-log 来察看下载进度。

(4)使用 wget -c 断点续传。

wget -c https://github.com/git-for-windows/git/releases/download/v2.25.1.windows.1/Git-2.25.1-32-bit.tar.bz2

使用 wget -c 重新启动下载中断的文件,对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。

(5)使用 wget --spider 测试下载链接。

wget --spider https://github.com/git-for-windows/git/releases/download/v2.25.1.windows.1/Git-2.25.1-32-bit.tar.bz2

(6)现在多个文件。每个文件的下载链接统一存放在一个文件中。

wget -i filelist.txt

(7)使用 wget -o 将下载过程中的日志信息存入到日志文件,而不是输出到终端。

wget -o wget.log https://github.com/git-for-windows/git/releases/download/v2.25.1.windows.1/Git-2.25.1-32-bit.tar.bz2

参考文献

[1] wget(1) manual
[2] CSDN.【Linux】一步一步学Linux——wget命令(192)
[3] GNU wget 官网

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页