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 -ifiles.txt -
模拟用户代理:使用-U选项,wget可以模拟不同的浏览器(用户代理):
wget -U Mozilla http://example.com -
保存下载日志:使用-o选项可以将日志保存到指定文件:
wget -o download.loghttp://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可以在各种不同的网络环境和需求下高效工作。