0

0

Linux下载文件命令wget的使用说明

P粉602998670

P粉602998670

发布时间:2025-09-07 11:51:02

|

814人浏览过

|

来源于php中文网

原创

wget是一个强大的命令行下载工具,支持断点续传、递归下载和镜像网站。使用wget -c可续传中断的大文件;--mirror --convert-links --page-requisites --no-parent可完整下载网站用于离线浏览;与curl相比,wget专注下载,而curl更擅长多协议交互和API调试。

linux下载文件命令wget的使用说明

wget
在Linux世界里,就像是命令行下的一个瑞士军刀,专门用来从网络上下载文件。它简单、直接,而且功能强大到足以处理各种复杂的下载任务,从单个文件到整个网站,它都能搞定。对我来说,它不仅仅是一个命令,更是一个在无数次自动化脚本和服务器维护中,帮我省下大量时间和精力的老伙计。它的核心价值在于,即使网络中断,它也能智能地尝试续传,而且完全不需要图形界面,这在远程服务器管理时简直是福音。

解决方案

使用

wget
下载文件,最基础的命令格式是:

wget [选项] [URL]

例如,要下载一个名为

example.zip
的文件,你只需要知道它的网络地址:

wget https://example.com/files/example.zip

文件会默认下载到当前目录。如果你想指定下载到其他目录,可以用

-P
--directory-prefix
选项:

wget -P /home/user/downloads https://example.com/files/example.zip

如果下载的文件名太长或者你想给它换个名字,

-O
--output-document
就派上用场了:

wget -O my_custom_name.zip https://example.com/files/example.zip

有时候,下载需要认证,比如通过用户名和密码,这时候

-user
--password
就很有用了:

wget --user=your_username --password=your_password https://example.com/secure/file.tar.gz

当然,很多时候我们下载的文件可能来自一个不是很稳定的网络,或者文件本身就很大。

wget
在这种情况下表现得非常出色,特别是它处理中断下载的能力,简直是救星。

Linux wget命令如何下载整个网站或目录?

说实话,

wget
真正让我觉得它不可替代的,是它递归下载的能力。这不仅仅是下载一个文件,而是可以抓取整个网站或者一个目录下的所有内容。这功能在做离线浏览、备份网站或者分析网站结构时特别有用。

要实现这个,你需要用到

--recursive
-r
选项。但仅仅这样还不够,通常我们还需要一些其他的选项来精细控制下载行为:

  • --level=N
    :指定递归的深度。默认是5,但如果你只想下载当前目录下的所有文件,可以设为1。
  • --no-parent
    :这个选项非常重要,它会阻止
    wget
    访问父目录,确保你不会意外地下载到网站根目录以外的东西。
  • --convert-links
    :下载完成后,将HTML文件中的链接转换为本地链接,这样你就可以在本地离线浏览整个网站了。
  • --page-requisites
    -P
    :下载所有页面所需的附加文件,比如图片、CSS文件、JavaScript脚本等,确保页面在本地能完整显示。
  • --mirror
    -m
    :这是一个组合选项,等同于
    -r -N -l inf --no-host-directories
    ,它会以镜像模式下载网站,保留时间戳,并无限递归。这是下载整个网站的最佳实践。

举个例子,如果你想完整地镜像一个网站供离线浏览:

wget --mirror --convert-links --page-requisites --no-parent https://example.com/

这个命令会下载

example.com
网站的所有内容,并调整链接,让你可以在本地浏览器中打开下载下来的HTML文件,就像在线浏览一样。不过,在使用这个功能时,务必注意目标网站的
robots.txt
文件,尊重网站的抓取策略,避免给对方服务器造成不必要的负担。

Magic AI Avatars
Magic AI Avatars

神奇的AI头像,获得200多个由AI制作的自定义头像。

下载

wget下载大文件中断后如何续传?

这大概是

wget
最常用的功能之一了,尤其是在处理那些动辄几个GB的大文件时。网络环境不稳定、断电、或者只是你不小心关掉了终端,都可能导致下载中断。这时候,
wget
的续传功能简直是雪中送炭。

核心选项是

-c
--continue
。当一个下载任务中断后,你只需要用相同的
wget
命令,加上
-c
选项,
wget
就会检查本地已下载的部分,然后从上次中断的地方继续下载。

# 假设你正在下载一个大文件,但中断了
wget https://example.com/large_archive.tar.gz

# 几分钟后,你发现中断了,想继续下载
wget -c https://example.com/large_archive.tar.gz

它能做到这一点,是因为HTTP协议本身支持“范围请求”(Range Requests)。当

wget -c
执行时,它会告诉服务器,它已经有了文件的前N个字节,请求服务器从第N+1个字节开始发送数据。当然,前提是服务器也支持这个功能,不过现在绝大多数的HTTP服务器都支持。

我个人就经常遇到这种情况,尤其是在下载一些大型的虚拟机镜像或者数据集时。没有

-c
,可能每次中断都意味着从头再来,那简直是噩梦。所以,只要是下载大文件,我几乎都会习惯性地带上
-c
,以防万一。

wget与curl命令有哪些核心差异和适用场景?

在Linux命令行工具中,

wget
curl
都是下载文件或与Web服务器交互的利器,但它们的设计理念和主要用途却有些不同。在我看来,它们就像是工具箱里两把不同的锤子,各有各的用武之地。

wget
Web Getter)顾名思义,它的核心设计目标就是“获取”Web上的资源。它更专注于非交互式、递归式的下载。如果你需要下载一个文件、一个目录甚至整个网站,并且希望这个过程是自动化的、能在后台运行的,那么
wget
通常是首选。它的递归下载、续传、后台运行(通过
&
--background
)等功能,都体现了其作为下载工具的强大。

curl
Client URL)则更加通用,它是一个数据传输工具,支持的协议远不止HTTP/HTTPS,还包括FTP、FTPS、Gopher、SMB、Telnet等二十多种协议。
curl
的设计更侧重于与服务器进行“交互”,它可以发送自定义的HTTP请求头、处理各种认证、上传数据、甚至模拟浏览器行为。它更像是一个“瑞士军刀”,适合那些需要精细控制网络请求的场景,比如测试API接口、调试Web服务、或者进行数据抓取时。

核心差异总结:

  • 默认行为:
    wget
    默认下载文件到本地,而
    curl
    默认将内容输出到标准输出(终端)。
  • 递归下载:
    wget
    天生支持递归下载(
    -r
    ),而
    curl
    没有内置的递归下载功能,需要通过脚本实现。
  • 协议支持:
    wget
    主要支持HTTP、HTTPS和FTP,而
    curl
    支持的协议种类更多。
  • 上传:
    curl
    可以上传数据(
    -F
    -T
    ),
    wget
    则没有这个功能。
  • API测试:
    curl
    在API测试和调试方面更强大,可以轻松构造各种HTTP请求(GET, POST, PUT, DELETE等)。

适用场景:

  • 选择
    wget
    当你需要下载单个文件、批量下载、镜像网站、或者在脚本中进行非交互式下载时。
  • 选择
    curl
    当你需要测试API、上传文件、发送自定义HTTP请求、或者与各种不同协议的服务器进行交互时。

坦白说,在我的日常工作中,这两个命令经常是并存的。对于简单的文件下载或网站备份,我会毫不犹豫地使用

wget
。但如果我需要调试一个RESTful API,或者需要发送一个带有特定头部信息的POST请求,那么
curl
就是我的首选。它们各有侧重,互为补充,理解它们的差异能让你在面对不同的网络任务时,选择最合适的工具。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
PHP API接口开发与RESTful实践
PHP API接口开发与RESTful实践

本专题聚焦 PHP在API接口开发中的应用,系统讲解 RESTful 架构设计原则、路由处理、请求参数解析、JSON数据返回、身份验证(Token/JWT)、跨域处理以及接口调试与异常处理。通过实战案例(如用户管理系统、商品信息接口服务),帮助开发者掌握 PHP构建高效、可维护的RESTful API服务能力。

179

2025.11.26

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

455

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

183

2023.10.30

java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

261

2025.10.24

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1926

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

656

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2395

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

47

2026.01.19

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.6万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号