第 7 章 · 05 测下载:`wget`


文档摘要

第 7 章 · 05 测下载: 本节摘要: 和 都能下载文件,但定位不同: 是「HTTP 多功能瑞士军刀」, 是「专业下载器」。 在「下载」这件事上更顺手:默认把响应存文件(而非打印到 stdout)、支持断点续传( )、能递归下载整个网站( )、对慢链接更顽强。本节要讲清 的下载强项,以及它常用于脚本的原因——默认行为比 curl 更「下载友好」,写脚本拉文件时通常选它。 内容来源:综合 知识整理,套用体系化模板。 学习目标 阅读完本节,你应当能够: 说清 与 的定位差别:前者专业下载,后者 HTTP 多功能。 用 下载文件(默认存为 URL 末段文件名)。 用 指定输出文件名、 断点续传、 静默、 限速。 用 递归下载整站(镜像),理解它的风险与礼仪。

第 7 章 · 05 测下载:wget

本节摘要:curlwget 都能下载文件,但定位不同:curl 是「HTTP 多功能瑞士军刀」,wget 是「专业下载器」。wget 在「下载」这件事上更顺手:默认把响应存文件(而非打印到 stdout)、支持断点续传(-c)、能递归下载整个网站(-r)、对慢链接更顽强。本节要讲清 wget 的下载强项,以及它常用于脚本的原因——默认行为比 curl 更「下载友好」,写脚本拉文件时通常选它。

内容来源:综合 wget 知识整理,套用体系化模板。

学习目标

阅读完本节,你应当能够:

  1. 说清 wgetcurl 的定位差别:前者专业下载,后者 HTTP 多功能。
  2. wget URL 下载文件(默认存为 URL 末段文件名)。
  3. -O 指定输出文件名、-c 断点续传、-q 静默、--limit-rate 限速。
  4. -r 递归下载整站(镜像),理解它的风险与礼仪。
  5. 理解为什么脚本里拉文件常选 wget(默认存文件,对慢链接顽强,失败自动重试)。

一、设计动机:wgetcurl 的分工

两者都能从 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 秒)别把对方搞挂;别去镜像受版权保护的站点。

三、踩坑与排错

坑 1:文件名冲突,自动加后缀

wget http://example.com/file.zip # 已存在 file.zip 时 # wget 会存为 file.zip.1, file.zip.2... 而非覆盖! wget -O file.zip http://... # 要覆盖用 -O 显式指定

坑 2:递归下载失控

wget -r http://example.com # 可能下载海量文件, 占满磁盘!

-r 不加 -l 限制深度,会无限递归。务必 -l N 限制层数,或先 -r --spider(只爬不下载)预览规模。

坑 3:HTTPS 证书问题

wget https://self-signed.example.com/file # 证书不受信报错 wget --no-check-certificate https://... # 跳过证书验证(内网/自签场景)

公开站别用 --no-check-certificate(有中间人风险);只在受控内网/自签证书场景用。

坑 4:curl 和 wget 的 -O 语义不同

curl -o file URL # curl 用小写 -o 指定输出文件 wget -O file URL # wget 用大写 -O 指定输出文件(注意大小写!)

两者参数大小写相反,切换时容易写错。

本节要点回顾

  1. wget 是专业下载器,curl 是 HTTP 多功能工具;调 API 用 curl,下文件用 wget。
  2. wget 默认存文件(以 URL 末段命名),curl 默认打印 stdout——这是两者最直观的差别。
  3. 下载核心选项:-O(输出名)、-c(断点续传,下大文件必加)、-q(静默)、--limit-rate(限速,生产礼让)。
  4. -r/-m 递归镜像整站,但要 -l N 限深度、-w 间隔,避免压垮对方与占满磁盘。
  5. 脚本里拉文件常选 wget:默认存文件、失败自动重试、对慢链接顽强。
  6. wget 大写 -O vs curl 小写 -o,切换注意大小写。

下一节讲远程登录与安全传输——ssh/scp/rsync,这是管理远程服务器的基础工具。


发布者: 作者: 灏天文库 转发
评论区 (0)
U