wget 命令速查表 - Linux 文件下载常用命令大全
脚本里写下载,决定成败的不是传输本身,而是失败之后怎么办,wget 把这件事做得比浏览器完整。核心是 -c 断点续传:中断后用同一条命令再跑,会带 Range 头接着上次的位置传,这在几个 GB 的安装包和镜像同步上是决定性差别。配套的是 --tries 与 --wait 控制重试次数和间隔,--timeout 避免卡在无响应连接上,--retry-on-http-error 让 503、429 也重试。递归一组覆盖 -r 深度、-np 不回溯父目录、-A/-R 按后缀接受或拒绝、-e robots=off。和 curl 的分工要说清:一次性抓一个文件且要接管道时 curl 更顺手;需要续传、递归、镜像或必须产出完整文件时 wget 才是答案。
基础下载 Basic Download 7
wget URL下载文件到当前目录
wget -O filename URL下载并保存为指定文件名
wget -P /path/to/dir URL下载到指定目录
wget -b URL后台下载
wget -q URL静默下载(不显示进度)
wget -v URL详细输出
wget -nc URL不下载已存在的文件(no-clobber)
断点续传 Resume 3
wget -c URL断点续传
wget -c -O filename URL断点续传并保存为指定文件名
wget --continue URL断点续传(同 -c)
递归下载 Recursive 8
wget -r URL递归下载(默认深度 5)
wget -r -l 2 URL递归下载深度 2 层
wget -r -np URL递归下载不访问父目录
wget -r -nd URL递归下载不创建目录结构
wget -r -N URL递归下载只下载新文件
wget -m URL镜像网站(等价于 -r -N -l inf --no-remove-listing)
wget --mirror URL镜像网站(同 -m)
wget -r -H -D example.com URL跨域下载但限制域名(-H 跨主机,-D 指定域)
过滤选项 Filter 6
wget -A "*.pdf,*.doc" URL只下载指定类型文件
wget -R "*.tmp,*.log" URL排除指定类型文件
wget --accept-regex ".*\.pdf$" URL正则匹配接受的文件
wget --reject-regex ".*\.tmp$" URL正则匹配拒绝的文件
wget -I /dir1,/dir2 URL只下载指定目录
wget -X /dir1,/dir2 URL排除指定目录
认证与代理 Auth & Proxy 6
wget --user=username --password=pass URLHTTP 认证
wget --ftp-user=user --ftp-password=pass URLFTP 认证
wget -e use_proxy=yes -e http_proxy=URL使用 HTTP 代理
wget -e use_proxy=yes -e https_proxy=URL使用 HTTPS 代理
wget --no-check-certificate URL跳过 SSL 证书验证
wget --user-agent="Mozilla/5.0" URL自定义 User-Agent(绕过 UA 检测)
常用场景 Common Patterns 8
wget -i urls.txt从文件读取 URL 列表下载
wget -r -l 1 -A "*.jpg,*.png" URL下载页面所有图片
wget -r -l 1 --convert-links URL下载页面并转换链接为本地
wget -r -l 1 -k -E -p URL下载完整网页(含图片、CSS、JS)
wget --limit-rate=100k URL限制下载速度
wget --timeout=30 --tries=3 URL设置超时和重试次数
wget --spider URL只检查不下载(测试链接是否可用)
wget -w 2 --random-wait -r URL礼貌抓取:每页等 2 秒并加随机抖动
命令示例
断点续传一个大文件
wget -c https://example.com/large.iso-c 让 wget 带着 Range 头请求续传,配合 --timeout=30 --tries=3 更稳。文件名必须是原来那个,否则 -c 找不到已有文件会从头开始。
输出
Resuming last request: Length: 1048576000 [1048576000/1048576000] HTTP request sent, awaiting response... 206 Partial Content Length: 1048576000 [1039460352/1048576000] 30.0MB/s eta 00:00:03 1048576000 100%[====] 103.95MB 29.87MB/s
把网页连同图片 CSS 一起镜像到本地
wget -r -l 1 -k -E -p https://example.com/docs/-k 把页面里的链接改成本地路径,-E 保存为 .html,-p 下载图片等附属资源,-l 1 限制只抓一层防止无限递归。
输出
--2026-09-30 15:20:11-- https://example.com/docs/ Resolving example.com (example.com)... 93.184.216.34 Connecting to example.com|93.184.216.34|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 12480 [text/html] Saving to: ‘example.com/docs/index.html’ 2026-09-30 15:20:12 (18.0 MB/s) - 12480 [text/html] saved
按类型批量下载并限速
wget -r -l 2 -A "*.pdf,*.zip" --limit-rate=500k -P ~/downloads https://example.com/files/-A 白名单只收指定类型,--limit-rate 单位是 KB/s,500k 即约 500KB/s。别忘了 -np,避免顺着上级链接爬出站点范围。
常见坑与注意事项
- wget -r 递归若不加 -l 限制深度或 -np,可能爬出站点范围把整个互联网拖下来。
- --no-check-certificate 关闭证书校验,中间人可替换下载内容,只在临时调试时使用。
- -c 断点续传要求文件名与首次一致,改了名字会从头下载;源站不支持 Range 时 -c 无效。
- 递归下载前先用 -l 1 小范围试探,确认目录结构符合预期再放开。
- 递归下载站点前确认 robots.txt 与使用条款,批量抓取可能违规。
提示
- wget 支持 HTTP、HTTPS 和 FTP 协议,支持断点续传和递归下载。
- 递归下载时注意深度(-l),避免下载过多文件。
- 镜像网站用 -m 参数,会自动处理链接转换和时间戳。
- --wait=5 --wait-retry=10 让每个文件之间等 5 秒、每次重试等 10 秒,避免密集抓取把目标站点打挂或触发限流。
- wget --spider -q <url> 只发请求不下载正文,用在 CI 里当可用性探针比 curl 更省带宽,且返回码即结果。
- 指定 --content-disposition 让 wget 按服务器给的文件名落盘,配合 -P 指定目录,避免一串哈希名躺在当前目录。
由 巧匠 维护
公开更新于 2026年7月21日,内容持续校对官方文档。