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: 排除的目录列表。