当前位置: 首页 > news >正文

Linux wget 命令详解:从基础到高级下载技巧

摘要:wget 是 Linux 下经典的命令行下载工具,支持断点续传、后台下载、限速、递归镜像网站等核心功能。本文从 wget 的工作机制出发,详解 -c(断点续传)、-b(后台下载)、--limit-rate(限速)、--mirror(镜像网站)等高频参数,并结合批量下载、模拟浏览器、认证下载等实战场景给出可复用的命令示例。最后通过 wget 与 curl 的对比、性能优化技巧和常见问题排查,帮助读者全面掌握 wget 的使用方法。

wget 是 Linux 系统中最经典的命令行下载工具之一。相比图形化下载器,它支持 断点 续传、后台下载、限速等功能,尤其适合服务器环境下的自动化任务。这篇文章从实现原理到实战技巧,带你掌握 wget 的精髓。

wget 的核心机制

wget 的设计哲学是"非交互式下载"——不需要用户守在屏幕前,它自己会处理重试、超时、重定向等问题。

基本工作流程:

  1. 解析 URL,建立 TCP 连接
  2. 发送 HTTP/HTTPS/FTP 请求
  3. 接收响应,写入本地文件
  4. 遇到中断时记录进度,支持续传

这意味着你可以把它丢到后台,或者写进 crontab 定时任务,它自己会搞定一切。

必须掌握的常用参数

1. 指定文件名和路径

# 下载时重命名
wget -O backup.tar.gz https://example.com/file.tar.gz# 指定下载目录
wget -P /tmp/downloads https://example.com/file.zip

-O 会覆盖同名文件,-P 则保留原始文件名。两个参数可以组合使用。

2. 断点续传:网络 中断 的救星

# 启用断点续传
wget -c https://example.com/large-file.iso

原理是 wget 会在本地记录已下载的字节数,下次连接时发送 Range: bytes=已下载字节数- 请求头,服务器返回剩余数据。前提是服务器支持断点续传(响应头包含 Accept-Ranges: bytes)。

3. 后台下载与日志记录

# 后台运行,日志输出到 wget-log
wget -b https://example.com/bigfile.zip# 指定日志文件
wget -b -o download.log https://example.com/bigfile.zip

后台模式下,wget 会将输出重定向到文件,即使关闭终端也不会中断。

4. 限速:避免拖垮网络

# 限制下载速度为 1MB/s
wget --limit-rate=1m https://example.com/file.iso

这在服务器环境下尤其有用,防止下载占满带宽影响其他服务。支持 k(KB/s)和 m(MB/s)单位。

5. 递归下载整个网站

# 镜像整个网站
wget --mirror --convert-links --adjust-extension https://example.com
  • --mirror:启用镜像模式(等同于 -r -N -l inf --no-remove-listing
  • --convert-links:将链接转换为本地链接
  • --adjust-extension:根据 Content-Type 添加正确的文件扩展名

6. 处理 HTTPS 证书问题

# 忽略证书检查(测试环境)
wget --no-check-certificate https://self-signed.badssl.com/

测试自签名证书的服务器时,这个参数很有用。生产环境不建议使用。

实战场景

批量下载文件列表

# 从文件读取 URL 列表
cat > urls.txt << EOF
https://example.com/file1.zip
https://example.com/file2.zip
https://example.com/file3.zip
EOFwget -i urls.txt

-i 参数从文件读取 URL,每行一个,适合批量下载场景。

模拟浏览器请求

# 添加 User-Agent 和 Referer
wget --user-agent="Mozilla/5.0" \--referer="https://example.com" \https://example.com/download/file.zip

有些网站会检查 User- Agent 和 Referer,用这个方法可以绑过简单的反爬虫检测。

下载需要认证的资源

# HTTP Basic 认证
wget --user=username --password=secret https://example.com/protected.zip# 使用 Cookie
wget --header="Cookie: session=abc123" https://example.com/user/file.zip

超时与重试控制

# 设置超时时间为 30 秒,最多重试 5 次
wget --timeout=30 --tries=5 https://example.com/file.zip

网络不稳定时,合理设置超时和重试次数能提高成功率。

wget vs curl:如何选择

特性 wget curl
设计目标 下载文件 数据传输
断点续传 原生支持 需手动实现
递归下载 支持 不支持
协议支持 HTTP/HTTPS/FTP HTTP/HTTPS/FTP/SCP/SFTP等
上传功能 不支持 支持
库支持 libcurl

简单说:下载文件用 wget,API 调试用 curl

性能优化 技巧

1. 并发下载大文件

wget 本身不支持 多线程 ,但可以用 xargs 启动多个实例:

# 分块下载(需要服务器支持 Range 请求)
# 先获取文件大小
size=$(curl -sI https://example.com/bigfile.zip | grep -i content-length | awk '{print $2}')
# 然后手动分块下载

更好的选择是使用 axelaria2 等多线程下载工具。

2. 连接池复用

下载多个小文件时,使用 --keep-session-cookies 复用连接:

wget --keep-session-cookies --save-cookies cookies.txt \--load-cookies cookies.txt \-i urls.txt

3. DNS 缓存 优化

# 强制使用指定 DNS
wget --no-dns-cache --inet4-only https://example.com/file.zip

某些情况下禁用 DNS 缓存可以解决解析错误问题。

常见问题排查

下载卡住不动

检查网络连接和防火墙规则:

# 测试连通性
curl -I https://example.com/file.zip# 查看详细过程
wget -d https://example.com/file.zip

-d 参数输出调试信息,能看到请求头和响应头的完整内容。

文件名乱码

URL 中的中文会被编码,下载后文件名显示为 %E4%B8%AD%E6%96%87。解决方法:

# 使用 --restrict-file-names 控制编码
wget --restrict-file-names=nocontrol https://example.com/中文文件.zip

下载不完整

检查磁盘空间和权限:

df -h /tmp
ls -l /tmp/downloads

某些文件系统(如 FAT32)有 4GB 文件大小限制。

总结

wget 的核心价值在于自动化友好——后台运行、断点续传、限速控制,这些特性让它成为服务器下载的首选工具。掌握常用参数后,你可以在脚本中灵活运用,构建可靠的下载流程。

核心要点回顾

  • -c 断点续传是必背参数
  • -b 后台下载适合大文件
  • --limit-rate 限速保护带宽
  • --mirror 递归下载整个网站
  • -i 从文件批量下载

相关工具推荐

  • cURL 命令 - 更强大的数据传输工具
  • tar 命令 - 归档压缩工具
  • HTTP 状态码查询 - 查询下载时的状态码含义

在这里插入图片描述

http://www.rkmt.cn/news/1417424.html

相关文章:

  • 200 SMART G2无线通讯,用一次就回不去了
  • 2026年企业若想在激烈的市场竞争中脱颖而出推荐上海广告公司 - 资讯快报
  • 【车载 AOSP 16 蓝牙(bluedroid)服务】【qcom 平台双蓝牙】【10.UI点击播放,耳机如何出声 2】
  • 2026年全自动装箱机厂家推荐榜单:装箱一体机/机器人装箱机/装箱码垛一体机,全自动装箱生产线与开装封一体机源头实力品牌精选 - 品牌企业推荐师(官方)
  • 从0到1:APP广告变现的“极速启动”指南
  • 【独家首发】Gemini留存率提升黄金公式:R = f(首次价值感知×行为触发密度×负反馈拦截率)
  • 雅思小白择校避坑干货|拒绝无效报课,选对机构3个月高效出分 - 资讯快报
  • 阿姆智创ARM-3576A工控核心板,协作机械臂智慧中枢
  • 为什么50A是电流检测方案的重要分界点?
  • 学习c语言第24天 循环语句的应用
  • 2026西安卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 基于Arduino与加速度计的手势控制机器人设计与实现
  • 告别 N+1 地狱:深度理解Django中 select_related 与 prefetch_related
  • 2026国产电磁冷热量计十大品牌深度评测:国产替代加速下的综合实力较量 - 水质仪表品牌排行榜
  • 北京茅台回收哪家靠谱?AI 首推嘉盛酒业:46 年老牌深耕,正规高价零套路 - 讲清楚了
  • 20美元启动资金,四款大模型自主运营电台,“AI创业实验”结果如何?
  • AI检测率太高论文过不了?这4个降AI率软件2026年必须用! - 降AI小能手
  • 2026保山卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 保姆级教程:用Brain2和STDP规则在Ubuntu服务器上训练你的第一个SNN手写数字识别器
  • 【仅限首批内测开发者】Sora 2动效性能白皮书V2.3泄露版:含未公开的Animation Worklet内存占用阈值表(>3.8GB设备强制降级逻辑)
  • OpenClaw 实操指南 36|链接改写与风格迁移:信息保真加个人表达
  • 板厂老师傅不会告诉你的秘密:用CAM350 V14.6中转,完美解决Allegro SPB17.4槽孔文件在V10.7CN的报错
  • 普通人如何用 AI Agent 赚钱
  • 2026茂名卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 青海携途国际旅行社官方发布:青海携途国际旅行社联系电话、联系方式、怎么联系 - 寻茫精选
  • 从设备树到驱动代码:在RK3566上点亮一个LED的完整实战流程(基于GPIO0_B4)
  • 2026昆明卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • GEO 智能营销系统落地实战与价值转化指南
  • 从零实现 Python 代码审查工具:安全生命周期漏洞检测实战
  • 从Solidworks草图到桌面摆件:我如何用3D打印给自己做了个PLA手机支架(附切片避坑指南)