第 7 章 · 05 测下载: 本节摘要: 和 都能下载文件,但定位不同: 是「HTTP 多功能瑞士军刀」, 是「专业下载器」。 在「下载」这件事上更顺手:默认把响应存文件(而非打印到 stdout)、支持断点续传( )、能递归下载整个网站( )、对慢链接更顽强。本节要讲清 的下载强项,以及它常用于脚本的原因——默认行为比 curl 更「下载友好」,写脚本拉文件时通常选它。 内容来源:综合 知识整理,套用体系化模板。 学习目标 阅读完本节,你应当能够: 说清 与 的定位差别:前者专业下载,后者 HTTP 多功能。 用 下载文件(默认存为 URL 末段文件名)。 用 指定输出文件名、 断点续传、 静默、 限速。 用 递归下载整站(镜像),理解它的风险与礼仪。
wget本节摘要:
curl和wget都能下载文件,但定位不同:curl是「HTTP 多功能瑞士军刀」,wget是「专业下载器」。wget在「下载」这件事上更顺手:默认把响应存文件(而非打印到 stdout)、支持断点续传(-c)、能递归下载整个网站(-r)、对慢链接更顽强。本节要讲清wget的下载强项,以及它常用于脚本的原因——默认行为比 curl 更「下载友好」,写脚本拉文件时通常选它。
内容来源:综合
wget知识整理,套用体系化模板。
阅读完本节,你应当能够:
wget 与 curl 的定位差别:前者专业下载,后者 HTTP 多功能。wget URL 下载文件(默认存为 URL 末段文件名)。-O 指定输出文件名、-c 断点续传、-q 静默、--limit-rate 限速。-r 递归下载整站(镜像),理解它的风险与礼仪。wget(默认存文件,对慢链接顽强,失败自动重试)。wget 与 curl 的分工两者都能从 URL 下载,但设计目标不同:
| 特性 | curl |
wget |
|---|---|---|
| 默认行为 | 打印响应到 stdout | 存为文件 |
| 断点续传 | 需手动 -C - |
-c 更顺手 |
| 递归下载网站 | 不支持 | 支持 −r |
| 慢/不稳定链接 | 一次失败即退 | 自动重试 |
| 协议广度 | HTTP/FTP/SCP/... 广 | 主要是 HTTP/FTP |
| 适合场景 | 调试 API、复杂 HTTP 请求 | 下载文件、镜像站点 |
简单记:调 API 用 curl,下文件用 wget。
wget 名字来自 "World Wide Web" + "get",出身 GNU 项目,专注「下载」这一件事做到极致。它的默认行为(存文件、自动重试、断点续传友好)都是为了「可靠地把一个大文件拉下来」这个场景优化的。
wget http://example.com/file.zip # 下载, 存为 file.zip wget -O newname.zip http://... # -O 指定输出文件名 wget -q http://... # -q: 静默(脚本里常用) wget -O- http://... # 输出到 stdout(类似 curl 默认)
wget -c http://example.com/big.iso # -c: 续传, 中断后重新跑接着下
下载到一半断了(网络中断、Ctrl+C),重新跑 wget -c 会从断点继续,而非重头来。这是下大文件的必备选项。
wget --limit-rate=500k http://... # 限速 500KB/s
在生产服务器上拉文件,不限速可能占满带宽影响业务。--limit-rate 是「礼让」选项。
wget -q http://... # 静默下载(不显示进度) wget -q -O /tmp/data http://... && process /tmp/data # 脚本里拉完接着处理
wget -r -l 2 http://example.com # -r 递归下载, -l 2 限制深度 2 层 wget -m http://example.com # -m = mirror, 等价 -r -N -l inf
-r 会顺着页面里的链接把整个站下载下来。注意礼仪与法律:递归下载会给对方服务器造成压力,设个 --limit-rate、-w 1(每请求等 1 秒)别把对方搞挂;别去镜像受版权保护的站点。
wget http://example.com/file.zip # 已存在 file.zip 时 # wget 会存为 file.zip.1, file.zip.2... 而非覆盖! wget -O file.zip http://... # 要覆盖用 -O 显式指定
wget -r http://example.com # 可能下载海量文件, 占满磁盘!
-r 不加 -l 限制深度,会无限递归。务必 -l N 限制层数,或先 -r --spider(只爬不下载)预览规模。
wget https://self-signed.example.com/file # 证书不受信报错 wget --no-check-certificate https://... # 跳过证书验证(内网/自签场景)
公开站别用 --no-check-certificate(有中间人风险);只在受控内网/自签证书场景用。
-O 语义不同curl -o file URL # curl 用小写 -o 指定输出文件 wget -O file URL # wget 用大写 -O 指定输出文件(注意大小写!)
两者参数大小写相反,切换时容易写错。
wget 是专业下载器,curl 是 HTTP 多功能工具;调 API 用 curl,下文件用 wget。-O(输出名)、-c(断点续传,下大文件必加)、-q(静默)、--limit-rate(限速,生产礼让)。-r/-m 递归镜像整站,但要 -l N 限深度、-w 间隔,避免压垮对方与占满磁盘。-O vs curl 小写 -o,切换注意大小写。下一节讲远程登录与安全传输——ssh/scp/rsync,这是管理远程服务器的基础工具。