Linux wget 命令完全指南
wget 是 Linux 系统中最常用的命令行下载工具之一。它支持 HTTP、HTTPS 和 FTP 协议,功能强大且稳定,特别适合在脚本或远程服务器环境中使用。本文将全面介绍 wget 的用法,从基础到进阶,帮你轻松掌握这个必备工具。
1. 什么是 wget?
wget 是一个非交互式的网络下载器,即使在使用者退出终端或网络中断时,它也能自动重试并继续下载(支持断点续传)。它由 GNU 项目维护,几乎所有的 Linux 发行版都预装了它。
主要特点:
- 支持 HTTP、HTTPS、FTP 协议
- 支持递归下载(爬取整个网站)
- 支持断点续传
- 支持后台运行
- 支持限速、代理、认证等
2. 基本语法
wget [选项] [URL]
最简单的用法就是直接跟上文件 URL:
wget https://example.com/file.zip
执行后,文件会下载到当前工作目录,并显示实时进度、速度、剩余时间等信息。
3. 常用选项详解
| 选项 | 说明 |
|---|---|
-O <文件名> |
将下载内容保存为指定文件名(可用于重命名) |
-o <日志文件> |
将输出信息写入日志文件,而不是显示在终端 |
-c |
断点续传(继续之前未完成的下载) |
-b |
后台下载(将进程放到后台) |
-q |
静默模式(不输出任何信息) |
-v |
详细输出(调试用) |
--limit-rate=<速率> |
限速下载(如 --limit-rate=200k) |
-t <次数> |
设置重试次数(0 表示无限重试) |
-T <秒> |
设置超时时间(秒) |
-P <目录> |
指定下载保存的目录(Prefix) |
-r |
递归下载(用于下载整个网站) |
-l <层数> |
递归下载的最大深度(配合 -r) |
-np |
不递归到父目录(配合 -r) |
-A <扩展名> |
只下载指定扩展名的文件(如 -A .jpg,.png) |
-R <扩展名> |
排除指定扩展名的文件 |
--user=<用户名> |
指定 HTTP/FTP 认证用户名 |
--password=<密码> |
指定 HTTP/FTP 认证密码 |
--header="Header: value" |
自定义请求头(如修改 User-Agent) |
--post-data=<数据> |
发送 POST 请求(数据内容) |
--post-file=<文件> |
发送 POST 请求(从文件读取数据) |
--no-check-certificate |
忽略 SSL 证书验证(适用于自签名证书) |
--spider |
爬虫模式(仅检查链接是否存在,不下载) |
4. 典型使用示例
4.1 下载单个文件
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.4.tar.gz
4.2 指定保存文件名
wget -O myfile.zip https://example.com/download/largefile.zip
4.3 断点续传(下载中断后继续)
wget -c https://example.com/bigfile.iso
4.4 后台下载
wget -b https://example.com/hugefile.mp4
后台下载时,会在当前目录生成 wget-log 文件记录输出。
4.5 限速下载
wget --limit-rate=500k https://example.com/video.mp4
4.6 下载到指定目录
wget -P /home/user/downloads/ https://example.com/file.pdf
4.7 递归下载整个网站(镜像)
wget -r -l 5 -np -k https://example.com/docs/
-r:开启递归-l 5:最多递归 5 层-np:不进入父目录-k:转换链接为本地相对路径(适合离线浏览)
4.8 只下载特定类型的文件
wget -r -A .pdf,.txt https://example.com/documents/
4.9 使用 HTTP 基本认证
wget --user=myuser --password=mypass https://example.com/private/file
4.10 伪装 User-Agent(绕过某些限制)
wget --header="User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" https://example.com/api
4.11 发送 POST 请求
wget --post-data="name=John&age=30" https://example.com/submit
或从文件读取数据:
wget --post-file=data.json https://example.com/api
4.12 测试链接是否有效(spider 模式)
wget --spider https://example.com/notfound
通过返回码判断(0 表示成功,非 0 表示失败)。
5. 进阶技巧
5.1 使用 wget 下载多个文件
将 URL 列表放入文本文件,然后使用 -i 参数:
wget -i urls.txt
5.2 使用 cookies
wget --load-cookies cookies.txt https://example.com/protected
5.3 忽略 SSL 证书错误(测试环境常用)
wget --no-check-certificate https://self-signed.example.com
5.4 设置代理
wget -e use_proxy=yes -e http_proxy=http://proxy.company.com:8080 https://example.com
或者通过环境变量:
export http_proxy=http://proxy.company.com:8080
wget https://example.com
5.5 重试与等待
wget -t 5 -w 10 https://unstable-site.com/file
-t 5:重试 5 次-w 10:每次重试等待 10 秒
5.6 输出到标准输出(配合管道)
wget -q -O - https://example.com/script.sh | bash
-q静默,-O -输出到 stdout,可用于管道处理。
6. 下载进度与控制
默认情况下,wget 显示进度条、下载速度、已下载大小和剩余时间。你可以通过以下方式控制输出:
-q:完全静默(不显示任何输出)-nv:非冗长模式(显示较少信息,但仍有进度和错误)--show-progress:强制显示进度条(与-q配合时无效)
7. 注意事项
-
文件名处理:如果 URL 带有查询参数(如
?id=123),wget会保留该参数作为文件名的一部分。可以通过-O重命名避免。 -
递归下载风险:递归下载可能拉取大量文件,请谨慎使用,并设置深度限制。
-
带宽占用:大文件下载建议使用
--limit-rate避免占用过多带宽。 -
SSL 证书:对于生产环境,请不要随意使用
--no-check-certificate,这可能带来安全风险。 -
退出状态码:
wget返回 0 表示成功,非 0 表示错误(可查看手册获取详细代码含义)。
8. 常用组合命令速查
# 镜像一个静态网站(适合离线浏览)
wget -m -k -K -E https://example.com
# 批量下载(带重命名)
wget -O "image_$(date +%s).jpg" https://example.com/pic.jpg
# 下载并解压(配合 tar)
wget -q -O - https://example.com/src.tar.gz | tar xz
# 限制下载速度并后台运行
wget -b --limit-rate=1m https://bigfile.iso
9. 获取更多帮助
- 查看完整手册:
man wget - 简洁帮助:
wget --help
结语
wget 是一个低调但极其强大的工具,无论是日常文件下载、数据采集还是网站镜像,它都能胜任。掌握它的各种选项和组合技巧,会大大提升你在 Linux 环境下的工作效率。希望本文能帮助你从入门到精通,灵活运用 wget 解决实际问题。
如果你有任何问题或发现遗漏,欢迎留言讨论! ![]()