Linux中的wget
命令是一个非常强大的工具,用于从网络上下载文件。它支持HTTP、HTTPS和FTP协议,能够在断网或者是限速的情况下重启下载。wget
命令是命令行下的非交互式下载器,这意味着它可以在后台运行,而不干扰当前的进程,并且支持在下载过程中退出并在需要时继续下载。
wget
命令的一些基本用法:
- 基本下载:最简单的使用
wget
下载文件的方法是输入wget
后跟上要下载的文件的URL。例如:wget http://example.com/file.iso
- 断点续传:如果下载过程中断,可以使用
-c
选项重新开始下载,并从之前停止的地方继续:wget -c http://example.com/file.iso
- 下载整个网站:
wget
可以递归地下载网站上的所有文件、目录和子目录。这通过-r
(递归)选项实现:wget -r http://example.com
- 限制下载速度:为了防止
wget
使用过多的带宽,可以使用--limit-rate
选项来限制下载速度。例如,限制速度为100k/s:wget --limit-rate=100k http://example.com/file.iso
- 下载到指定目录:使用
-P
选项,可以指定下载文件的保存目录:wget -P /path/to/directory http://example.com/file.iso
- 后台下载:使用
-b
选项,wget
会在后台进行下载:wget -b http://example.com/file.iso
- 下载多个文件:可以使用
-i
选项配合一个文件列表来下载多个文件。该文件中应包含一个URL列表:wget -i
files.txt
- 模拟用户代理:使用
-U
选项,wget
可以模拟不同的浏览器(用户代理):wget -U Mozilla http://example.com
- 保存下载日志:使用
-o
选项可以将日志保存到指定文件:wget -o download.log
http://example.com/file.iso
wget命令 -P 和 -O的区别:
wget
命令中的 -P
和 -O
选项都与指定下载文件的位置有关,但它们的作用和用法有显著的不同:
-P
选项(--directory-prefix):
- 用途:
-P
选项用于指定下载文件的保存目录。当你使用这个选项时,wget
会将下载的文件保存到指定的目录中。 - 示例:如果你执行
wget -P /path/to/directory http://example.com/file.iso
,那么file.iso
将被保存在/path/to/directory
目录中。
-O
选项(--output-document):
- 用途:
-O
选项用于指定下载文件的确切名称和位置。它不仅指定了文件保存的目录,还指定了文件的名称。如果用-O
指定了文件名,无论URL中的文件名是什么,下载的文件都将保存为该指定的文件名。 - 示例:使用
wget -O /path/to/directory/filename.html http://example.com/file
时,无论原始文件名是什么,下载的文件都将保存为/path/to/directory/filename.html
。
总的来说,-P
用于指定目录,保留原始文件名,而 -O
用于指定完整的文件路径,包括文件名,通常用于下载单个文件时重命名该文件。如果同时使用这两个选项,-O
的设置会覆盖 -P
的效果。
wget
命令各种选项和参数详细用法说明:
启动选项
-V, --version
: 显示Wget的版本并退出。-h, --help
: 打印帮助信息。-b, --background
: 启动后转入后台运行。-e, --execute=COMMAND
: 执行.wgetrc
风格的命令。
日志和输入文件
-o, --output-file=FILE
: 将日志消息记录到指定文件。-a, --append-output=FILE
: 将消息追加到指定文件。-d, --debug
: 打印大量调试信息。-q, --quiet
: 安静模式,不输出信息。-v, --verbose
: 冗长模式,这是默认设置。-nv, --no-verbose
: 关闭冗长模式,但不完全静音。--report-speed=TYPE
: 按TYPE报告带宽,TYPE可以是bits。-i, --input-file=FILE
: 从本地或外部文件中找到的URL下载。-F, --force-html
: 将输入文件视为HTML。-B, --base=URL
: 解析HTML输入文件链接(-i -F)相对于URL。--config=FILE
: 指定使用的配置文件。
下载
-t, --tries=NUMBER
: 设置重试次数为NUMBER(0为无限)。--retry-connrefused
: 即使连接被拒绝也重试。-O, --output-document=FILE
: 将文档写入FILE。-nc, --no-clobber
: 跳过下载到已存在的文件(覆盖它们)。-c, --continue
: 继续部分下载的文件。--progress=TYPE
: 选择进度条类型。-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
: 在重试检索时等待1..SECONDS。--random-wait
: 在检索之间等待0.5WAIT...1.5WAIT秒。--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
: 首先连接到指定家族的地址,IPv6、IPv4或none。--user=USER
: 设置ftp和http的用户为USER。--password=PASS
: 设置ftp和http的密码为PASS。--ask-password
: 提示输入密码。--no-iri
: 关闭IRI支持。--local-encoding=ENC
: 使用ENC作为IRIs的本地编码。--remote-encoding=ENC
: 使用ENC作为默认的远程编码。--unlink
: 覆盖前删除文件。
目录
-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保持活动(持久连接)。--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头(实验性的)。--content-on-error
: 在服务器错误时输出接收到的内容。--auth-no-challenge
: 在服务器的挑战之前发送基本HTTP认证信息。
HTTPS(SSL/TLS)选项
--secure-protocol=PR
: 选择安全协议,auto, SSLv2, SSLv3, TLSv1, TLSv1_1和TLSv1_2之一。--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
: 禁用“被动”传输模式。--preserve-permissions
: 保留远程文件权限。--retr-symlinks
: 递归时获取链接到的文件(而非目录)。
WARC选项
--warc-file=FILENAME
: 将请求/响应数据保存到.warc.gz文件。--warc-header=STRING
: 将STRING插入到warcinfo记录。--warc-max-size=NUMBER
: 设置WARC文件的最大大小为NUMBER。--warc-cdx
: 写CDX索引文件。--warc-dedup=FILENAME
: 不存储在此CDX文件中列出的记录。--no-warc-compression
: 不用GZIP压缩WARC文件。--no-warc-digests
: 不计算SHA1摘要。--no-warc-keep-log
: 不将日志文件存储在WARC记录中。--warc-tempdir=DIRECTORY
: WARC写入器创建的临时文件的位置。
递归下载
-r, --recursive
: 指定递归下载。-l, --level=NUMBER
: 最大递归深度(inf或0表示无限)。--delete-after
: 下载后删除本地文件。-k, --convert-links
: 使下载的HTML或CSS中的链接指向本地文件。--backups=N
: 写入文件X之前,旋转最多N个备份文件。-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
: 拒绝扩展名的逗号分隔列表。--accept-regex=REGEX
: 接受URL的正则表达式匹配。--reject-regex=REGEX
: 拒绝URL的正则表达式匹配。--regex-type=TYPE
: 正则表达式类型(posix|pcre)。-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最后组件指定的名称。-X, --exclude-directories=LIST
: 排除目录的列表。-np, --no-parent
: 不升级到父目录。
这些选项提供了对下载过程的深入控制,使得wget
可以在各种不同的网络环境和需求下高效工作。