服务器上要下个软件包、备份文件要从远端拉回来、想镜像整个网站——命令行下载最常用的工具就是 wget。和 curl 侧重接口调试不同,wget 是专职下载的:支持断点续传、递归抓取、后台任务、限速,一条命令干完下载的活。这篇文章把 wget 的常用参数和实战场景讲透。
一、基础下载
wget https://example.com/file.zip # 下载到当前目录
wget -O my.zip https://example.com/file.zip # 指定保存文件名
wget -P /data/downloads https://example.com/file.zip # 指定保存目录
wget https://a.com/1.zip https://b.com/2.zip # 一次下载多个文件
下载时会显示进度条、速度、剩余时间,完成后文件就在当前目录(或指定目录)。
二、高频参数速查
| 参数 | 作用 | 示例 |
|---|---|---|
-c |
断点续传 | wget -c https://example.com/big.iso |
-b |
后台下载 | wget -b URL,日志写入 wget-log |
-O |
指定输出文件名 | wget -O backup.tar.gz URL |
-P |
指定保存目录 | wget -P /backup URL |
-q |
静默模式,不输出进度 | wget -q URL |
-T |
超时秒数 | wget -T 30 URL |
-t |
失败重试次数 | wget -t 5 URL(0 表示无限重试) |
--limit-rate |
限速下载 | wget --limit-rate=1m URL |
-U |
自定义 User-Agent | wget -U "Mozilla/5.0" URL |
--no-check-certificate |
跳过 SSL 证书校验 | 自签名证书站点下载 |
-r |
递归下载 | wget -r URL |
-A/-R |
只接受/拒绝指定类型 | wget -A jpg,png URL |
三、断点续传与重试:大文件下载必备
wget -c https://mirror.example.com/debian.iso # 中断后接着下
wget -c -t 10 -T 60 https://mirror.example.com/big.iso # 断点续传+重试10次+超时60秒
用 -c 续传时,本地已有同名文件会从断点继续,不用重头再来。注意:服务器不支持断点(返回 416)时去掉 -c 重新下。
四、实战场景
1. 下载并解压到指定目录(宝塔/网站程序部署)
wget -q https://cn.wordpress.org/latest-zh_CN.zip -O /tmp/wp.zip \
&& unzip -q /tmp/wp.zip -d /www/wwwroot/ && mv /www/wwwroot/wordpress /www/wwwroot/example.com
2. 网站整站镜像(迁移/备份)
wget -r -l 3 -p -k -np https://www.example.com/ -P /tmp/mirror/
-r递归;-l 3限制抓取 3 层;-p下载页面所需资源;-k把链接改写成本地路径;-np不抓取上级目录。
3. 只下载某种类型的文件
wget -r -A "*.jpg,*.png" https://example.com/gallery/ -P pics/
4. 定时拉取远端备份(配合 crontab)
0 3 * * * wget -q -c -P /backup/remote/ https://vps.example.com/data/backup.tar.gz
5. 抓取登录后页面(带 Cookie)
wget --save-cookies cookies.txt --post-data="user=admin&pass=123" https://example.com/login
wget --load-cookies cookies.txt https://example.com/admin/report -O report.html
先用第一条登录保存 Cookie,再用第二条访问需要登录的页面。
五、与 curl 怎么选
| 场景 | 用哪个 |
|---|---|
| 下载文件、断点续传、递归抓站 | wget |
| 调接口、POST JSON、看响应头 | curl |
| 下载 + 立即处理(管道) | curl(wget 也能 -O- 输出到 stdout) |
简单记:要"下载"找 wget,要"请求"找 curl。
六、常见坑
- 证书报错:
ERROR: cannot verify ... certificate,内网或测试站点加--no-check-certificate; - 下载的是 HTML 而不是文件:服务器重定向或防盗链,加
-U "Mozilla/5.0"伪装浏览器,或补 Referer; - 断点续传失败:
--server-response看返回码,416 说明服务器不支持; - 递归抓太多:
-l 1只抓当前页,-np防爬上级目录,先小范围试跑; - URL 里有 & 或 ?:用引号包住整个 URL:
wget "https://example.com/api?key=abc&page=2"。
总结:wget 是服务器上下载的标准答案——大文件用 -c 断点续传、批量用 -A/-R 过滤类型、整站镜像用 -r -p -k 组合、定时任务配合 -q -b 静默后台。记住"下载找 wget、请求找 curl"这个分工,再记下 -c -O -P -b 四个参数,日常下载需求全覆盖。




