Linux下远程下载文件到服务器“wget”命令详解

来源:wget 浏览:553次 时间:2024-05-27
做网站找雨过天晴工作室


Linux中的wget命令是一个非常强大的工具,用于从网络上下载文件。它支持HTTP、HTTPS和FTP协议,能够在断网或者是限速的情况下重启下载。wget命令是命令行下的非交互式下载器,这意味着它可以在后台运行,而不干扰当前的进程,并且支持在下载过程中退出并在需要时继续下载。

wget命令的一些基本用法:

  1. 基本下载:最简单的使用wget下载文件的方法是输入wget后跟上要下载的文件的URL。例如:
    wget http://example.com/file.iso
  2. 断点续传:如果下载过程中断,可以使用-c选项重新开始下载,并从之前停止的地方继续:
    wget -c http://example.com/file.iso
  3. 下载整个网站:wget可以递归地下载网站上的所有文件、目录和子目录。这通过-r(递归)选项实现:
    wget -r http://example.com
  4. 限制下载速度:为了防止wget使用过多的带宽,可以使用--limit-rate选项来限制下载速度。例如,限制速度为100k/s:
    wget --limit-rate=100k http://example.com/file.iso
  5. 下载到指定目录:使用-P选项,可以指定下载文件的保存目录:
    wget -P /path/to/directory http://example.com/file.iso
  6. 后台下载:使用-b选项,wget会在后台进行下载:
    wget -b http://example.com/file.iso
  7. 下载多个文件:可以使用-i选项配合一个文件列表来下载多个文件。该文件中应包含一个URL列表:
    wget -ifiles.txt
  8. 模拟用户代理:使用-U选项,wget可以模拟不同的浏览器(用户代理):
    wget -U Mozilla http://example.com
  9. 保存下载日志:使用-o选项可以将日志保存到指定文件:
    wget -o download.loghttp://example.com/file.iso

wget命令 -P 和 -O的区别:

wget 命令中的 -P 和 -O 选项都与指定下载文件的位置有关,但它们的作用和用法有显著的不同:

  1. -P 选项(--directory-prefix)
  • 用途:-P 选项用于指定下载文件的保存目录。当你使用这个选项时,wget 会将下载的文件保存到指定的目录中。
  • 示例:如果你执行 wget -P /path/to/directory http://example.com/file.iso,那么 file.iso 将被保存在 /path/to/directory 目录中。


  1. -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可以在各种不同的网络环境和需求下高效工作。