命令 wget

118 阅读6分钟

wget 是一个非常强大的命令行工具,用于从网络上下载文件。它支持 HTTP、HTTPS 和 FTP 协议,并且可以通过代理下载。wget 是一个非交互式下载器,这意味着它可以在用户退出后继续运行。

基本语法

wget [选项] [URL]

常用选项

  1. 下载文件

    wget http://example.com/file.zip
    

    这将下载 file.zip 文件到当前目录。

  2. 指定输出文件名

    wget -O newfile.zip http://example.com/file.zip
    

    使用 -O 选项可以指定下载文件的名称为 newfile.zip

  3. 断点续传

    wget -c http://example.com/file.zip
    

    使用 -c 选项可以在下载中断后继续下载。

  4. 后台下载

    wget -b http://example.com/file.zip
    

    使用 -b 选项可以在后台下载文件。下载日志会保存在 wget-log 文件中。

  5. 限制下载速度

    wget --limit-rate=200k http://example.com/file.zip
    

    使用 --limit-rate 选项可以限制下载速度为 200KB/s。

  6. 下载整个网站

    wget --mirror -p --convert-links -P ./local http://example.com
    

    这个命令会镜像整个网站到本地目录 ./local,并且会将所有链接转换为本地链接。

    • --mirror:启用镜像选项,相当于 -r -N -l inf --no-remove-listing
    • -p:下载页面所需的所有文件(例如图片、样式表)。
    • --convert-links:将下载后的链接转换为本地链接。
    • -P:指定下载目录。
  7. 下载 FTP 目录

    wget -r ftp://example.com/pub/
    

    使用 -r 选项可以递归下载 FTP 目录。

  8. 使用代理

    wget -e use_proxy=yes -e http_proxy=http://proxy.example.com:8080 http://example.com/file.zip
    

    使用 -e 选项设置代理。

  9. HTTP 用户认证

    wget --user=username --password=password http://example.com/file.zip
    

    使用 --user--password 选项可以进行 HTTP 基本认证。

  10. 下载多个文件

    wget -i filelist.txt
    

    使用 -i 选项可以从文件 filelist.txt 中读取 URL 列表并下载。

高级用法

  1. 递归下载

    wget -r -l 5 http://example.com
    

    使用 -r 选项可以递归下载,-l 选项可以指定递归深度。

  2. 只下载特定类型文件

    wget -r -A "*.jpg,*.png" http://example.com
    

    使用 -A 选项可以只下载特定类型的文件,例如图片文件。

  3. 跳过特定类型文件

    wget -r -R "*.gif" http://example.com
    

    使用 -R 选项可以跳过特定类型的文件。

  4. 下载时保持服务器目录结构

    wget -x http://example.com/dir/file.zip
    

    使用 -x 选项可以在本地创建与服务器相同的目录结构。

  5. 自动重试

    wget --tries=10 http://example.com/file.zip
    

    使用 --tries 选项可以指定重试次数。

示例

  1. 下载文件并显示进度条

    wget --progress=bar http://example.com/file.zip
    
  2. 下载文件并忽略证书错误

    wget --no-check-certificate https://example.com/file.zip
    
  3. 使用 POST 请求下载文件

    wget --post-data="name=value" http://example.com/form
    

总结

wget 是一个功能强大的下载工具,适用于各种下载需求。从简单的文件下载到复杂的网站镜像,wget 都能胜任。通过灵活的选项组合,你可以根据具体需求定制下载行为。希望这些信息能帮助你更好地使用 wget!如果你有任何其他问题,欢迎继续提问。

基本选项

  • -V, --version:显示 wget 的版本信息。
  • -h, --help:显示帮助信息。
  • -b, --background:在后台运行 wget
  • -e, --execute=COMMAND:执行 .wgetrc 文件中的命令。

下载选项

  • -t, --tries=NUMBER:设置重试次数(默认值为 20)。
  • --retry-connrefused:如果连接被拒绝,则重试。
  • -O, --output-document=FILE:将文档写入到 FILE
  • -nc, --no-clobber:跳过已存在的文件不覆盖。
  • -c, --continue:继续下载已部分下载的文件。
  • --progress=TYPE:设置进度条类型(bardot 等)。
  • -N, --timestamping:只下载比本地文件新的文件。
  • --no-use-server-timestamps:不使用服务器时间戳。
  • -S, --server-response:打印服务器响应。
  • --spider:不下载文件,只检查文件是否存在。
  • -T, --timeout=SECONDS:设置超时时间。
  • --dns-timeout=SECONDS:设置 DNS 查询超时时间。
  • --connect-timeout=SECONDS:设置连接超时时间。
  • --read-timeout=SECONDS:设置读取超时时间。
  • --limit-rate=RATE:限制下载速度。
  • --no-dns-cache:不缓存 DNS 查询结果。
  • -4, --inet4-only:只使用 IPv4。
  • -6, --inet6-only:只使用 IPv6。

目录选项

  • -nd, --no-directories:不创建目录。
  • -x, --force-directories:强制创建目录。
  • -nH, --no-host-directories:不创建主机目录。
  • --protocol-directories:使用协议名称作为目录。
  • -P, --directory-prefix=PREFIX:将文件保存到 PREFIX 目录。
  • --cut-dirs=NUMBER:忽略远程目录层次。

HTTP 选项

  • --http-user=USER:HTTP 用户名。
  • --http-password=PASSWORD:HTTP 密码。
  • --no-cache:不使用服务器缓存。
  • --default-page=NAME:更改默认页面名称。
  • -E, --adjust-extension:根据 MIME 类型调整文件扩展名。
  • --ignore-length:忽略 Content-Length 标头。
  • --header=STRING:添加 HTTP 请求头。
  • --max-redirect=NUMBER:设置最大重定向次数。
  • --proxy-user=USER:代理用户名。
  • --proxy-password=PASSWORD:代理密码。
  • --referer=URL:设置 Referer 头。
  • --save-headers:保存 HTTP 头到文件。
  • -U, --user-agent=AGENT:设置用户代理。
  • --no-http-keep-alive:关闭 HTTP 持久连接。
  • --no-cookies:不使用 cookies。
  • --load-cookies=FILE:从文件加载 cookies。
  • --save-cookies=FILE:将 cookies 保存到文件。
  • --keep-session-cookies:保存会话 cookies。
  • --post-data=STRING:使用 POST 方法发送数据。
  • --post-file=FILE:使用 POST 方法发送文件。
  • --method=STRING:使用指定的 HTTP 方法。
  • --body-data=STRING:发送指定的请求体数据。
  • --body-file=FILE:发送指定的请求体文件。
  • --content-disposition:启用 Content-Disposition 处理。
  • --auth-no-challenge:发送基本认证信息而不等待服务器的挑战。

FTP 选项

  • --ftp-user=USER:FTP 用户名。
  • --ftp-password=PASSWORD:FTP 密码。
  • --no-remove-listing:不删除 .listing 文件。
  • --no-glob:不进行文件名扩展。
  • --no-passive-ftp:禁用 FTP 被动模式。
  • --retr-symlinks:下载符号链接的目标文件。

递归下载选项

  • -r, --recursive:递归下载。
  • -l, --level=NUMBER:设置递归下载的最大深度。
  • --delete-after:下载后删除文件。
  • -k, --convert-links:将链接转换为本地链接。
  • -K, --backup-converted:备份原始文件。
  • -m, --mirror:镜像网站(等同于 -r -N -l inf --no-remove-listing)。
  • -p, --page-requisites:下载页面所需的所有文件。
  • -A, --accept=LIST:只接受指定的文件类型。
  • -R, --reject=LIST:拒绝指定的文件类型。
  • -D, --domains=LIST:只下载指定域名的文件。
  • --exclude-domains=LIST:排除指定域名的文件。
  • --follow-ftp:跟随 FTP 链接。
  • --follow-tags=LIST:跟随指定的 HTML 标签。
  • --ignore-tags=LIST:忽略指定的 HTML 标签。
  • -H, --span-hosts:下载时跟随外部链接。
  • -L, --relative:仅跟随相对链接。
  • -I, --include-directories=LIST:只包含指定的目录。
  • -X, --exclude-directories=LIST:排除指定的目录。
  • -np, --no-parent:不追溯到父目录。

文件选项

  • -nc, --no-clobber:不覆盖已存在的文件。
  • -c, --continue:继续下载已部分下载的文件。
  • --progress=TYPE:设置进度条类型(bardot 等)。
  • -N, --timestamping:只下载比本地文件新的文件。
  • --no-use-server-timestamps:不使用服务器时间戳。
  • -S, --server-response:打印服务器响应。
  • --spider:不下载文件,只检查文件是否存在。
  • -T, --timeout=SECONDS:设置超时时间。
  • --dns-timeout=SECONDS:设置 DNS 查询超时时间。
  • --connect-timeout=SECONDS:设置连接超时时间。
  • --read-timeout=SECONDS:设置读取超时时间。
  • --limit-rate=RATE:限制下载速度。
  • --no-dns-cache:不缓存 DNS 查询结果。
  • -4, --inet4-only:只使用 IPv4。
  • -6, --inet6-only:只使用 IPv6。

其他选项

  • --bind-address=ADDRESS:绑定到指定地址。
  • --user=USER:设置用户名。
  • --password=PASSWORD:设置密码。
  • --wait=SECONDS:设置下载之间的等待时间。
  • --random-wait:随机等待时间。
  • --no-proxy:不使用代理。
  • --quota=NUMBER:设置下载配额。
  • --no-directories:不创建目录。
  • --cut-dirs=NUMBER:忽略远程目录层次。

这些选项可以组合使用,以满足各种下载需求。wget 是一个非常灵活和强大的工具,熟悉这些选项可以大大提高你的工作效率。如果你有任何具体的需求或问题,随时告诉我!