博客 / Linux/ wget命令大全

wget命令大全

wget命令大全

wget 命令常用示例

wget 是一个在命令行下使用的非交互式网络下载工具,支持 HTTP、HTTPS 和 FTP 协议。以下是一些常用场景的示例。

1. 下载单个文件

以下命令将从网络下载一个文件并保存在当前目录。

wget http://cn.wordpress.org/wordpress-latest-zh_CN.zip

下载过程中会显示进度条,包含下载完成百分比、已下载字节、当前速度和剩余时间。

2. 使用 -O 参数指定保存文件名

wget 默认会以 URL 中最后一个“/”后面的内容作为文件名。对于动态链接,这可能导致文件名不正确(例如 download.php?id=1)。使用 -O 参数可以指定一个明确的文件名。

wget -O wordpress.zip http://www.example.com/download.php?id=1080

3. 使用 --limit-rate 限制下载速度

wget 默认会占用尽可能多的带宽。如果你需要同时进行其他网络操作,可以使用此参数限速。

wget --limit-rate=300k http://cn.wordpress.org/wordpress-latest-zh_CN.zip

4. 使用 -c 参数进行断点续传

如果下载因网络问题中断,可以使用 -c 参数继续下载,而无需重新开始。

wget -c http://cn.wordpress.org/wordpress-latest-zh_CN.zip

5. 使用 -b 参数在后台下载

对于大文件,可以使用 -b 参数让 wget 在后台运行。输出信息会写入 wget-log 文件。

wget -b http://cn.wordpress.org/wordpress-latest-zh_CN.zip

可以使用以下命令查看下载进度:

tail -f wget-log

6. 使用 --user-agent 伪装浏览器标识

某些网站可能根据 User-Agent 拒绝非浏览器的访问请求。可以通过此参数模拟浏览器。

wget --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" 下载链接

7. 使用 --spider 参数测试链接有效性

此参数不会实际下载文件,仅用于检查链接是否有效,常用于定时任务前的检查。

wget --spider URL

如果链接有效,会返回类似 200 OK 的信息;如果链接失效,则会返回 404 Not Found

8. 使用 --tries 增加重试次数

wget 默认重试 20 次。在网络不稳定的情况下,可以增加重试次数。

wget --tries=40 URL

9. 使用 -i 参数批量下载

首先,将需要下载的 URL 列表保存到一个文件中(例如 download.txt),每行一个 URL。

cat > download.txt
url1
url2
url3

然后使用 -i 参数指定该文件进行批量下载。

wget -i download.txt

10. 使用 --mirror 镜像网站

以下命令可以将整个网站镜像到本地。

wget --mirror -p --convert-links -P ./LOCAL URL
  • --mirror: 开启镜像模式(相当于 -r -N -l inf --no-remove-listing)。
  • -p: 下载所有显示页面所需的资源(如图片、CSS)。
  • --convert-links: 下载完成后,将文档中的链接转换为本地链接。
  • -P ./LOCAL: 指定文件保存到本地目录。

11. 使用 --reject 过滤特定类型文件

例如,在下载网站时排除所有 GIF 图片。

wget --reject=gif URL

12. 使用 -o 参数将输出信息写入日志文件

将下载过程的输出信息保存到日志文件,而不是显示在终端。

wget -o download.log URL

注意:小写 -o 是写日志,大写 -O 是指定输出文件名。

13. 使用 -Q 参数限制总下载大小

此参数用于递归下载时限制所有文件的总大小,对单个文件下载无效。

wget -Q500m -i filelist.txt

14. 使用 -r -A 下载指定格式文件

递归下载网站中所有特定格式的文件,例如所有 PDF 文件。

wget -r -A.pdf URL

也可以结合 --accept--reject 进行更精细的控制。

15. FTP 下载

wget 支持 FTP 协议下载。

匿名 FTP 下载:

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

需要用户名和密码的 FTP 下载(有多种写法):

# 方式一:在 URL 中直接包含凭据
wget ftp://username:password@example.com/file.zip
# 方式二:使用单独的参数(密码含特殊字符时更安全)
wget --ftp-user=username --ftp-password=password ftp://example.com/file.zip

16. 递归下载整个网站

使用 -r 参数可以递归下载整个网站。务必谨慎使用,因为它会下载所有链接到的内容,可能包括外部网站。

wget -r http://example.com/

可以使用 -l 参数限制下载深度,例如只下载两层:

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

使用 -m 参数(相当于 -r -N -l inf --no-remove-listing)可以更方便地制作镜像站点,它会遵守网站的 robots.txt 规则。

17. 断点续传与连接控制

断点续传是 wget 的自动功能,使用 -c 参数即可。此外,还可以控制连接行为:

  • -t 次数: 设置重试次数(-t 0 表示无限重试)。
  • -T 秒数: 设置网络超时时间。
wget -c -t 100 -T 120 http://example.com/large-file.iso

18. HTTP 基础认证

对于需要用户名和密码的 HTTP 网站,可以使用以下参数:

wget --http-user=USERNAME --http-password=PASSWORD URL

请注意,wget 不支持基于客户端证书的认证,此类需求需使用其他工具(如 curl)。

19. 使用代理服务器

可以通过配置文件(~/.wgetrc)或命令行参数使用代理。

~/.wgetrc 中配置:

http_proxy = http://proxy-server:port/
ftp_proxy = http://proxy-server:port/

或使用命令行参数:

wget --proxy=on --proxy-user=USER --proxy-password=PASS URL

20. 处理包含中文字符的文件名

在递归下载时,wget 可能会对非 ASCII 字符(如中文)进行编码。使用 --restrict-file-names=nocontrol 参数可以尝试保持原始文件名。

wget -r --restrict-file-names=nocontrol ftp://example.com/测试.txt

常用参数速查表

  • -V, --version: 显示版本信息。
  • -h, --help: 显示帮助信息。
  • -O FILE: 将文档写入 FILE。
  • -nc, --no-clobber: 不覆盖已存在的文件。
  • -N, --timestamping: 只下载比本地新的文件。
  • -nd, --no-directories: 不创建目录,所有文件下载到当前目录。
  • -x, --force-directories: 强制创建与远程服务器相同的目录结构。
  • -A LIST, --accept LIST: 接受的文件模式列表,用逗号分隔。
  • -R LIST, --reject LIST: 拒绝的文件模式列表。
  • -D LIST, --domains LIST: 接受的域名列表。
  • --exclude-domains LIST: 排除的域名列表。
  • -L, --relative: 仅下载相对链接。
  • -H, --span-hosts: 递归时转到外部主机。
  • -I LIST, --include-directories LIST: 允许的目录列表。
  • -X LIST, --exclude-directories LIST: 排除的目录列表。

发表评论

您的邮箱不会公开。必填项已用 * 标注。