wget 命令详解与实战:文件下载、断点续传与整站镜像


服务器上要下个软件包、备份文件要从远端拉回来、想镜像整个网站——命令行下载最常用的工具就是 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。

六、常见坑

  1. 证书报错:ERROR: cannot verify ... certificate,内网或测试站点加 --no-check-certificate;
  2. 下载的是 HTML 而不是文件:服务器重定向或防盗链,加 -U "Mozilla/5.0" 伪装浏览器,或补 Referer;
  3. 断点续传失败:--server-response 看返回码,416 说明服务器不支持;
  4. 递归抓太多:-l 1 只抓当前页,-np 防爬上级目录,先小范围试跑;
  5. 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 四个参数,日常下载需求全覆盖。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

Linux 用户与用户组管理:useradd、groupadd、passwd 与权限隔离

Linux 文件权限详解:chmod、chown 与 umask 实战

评 论
更换验证码