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

夜婷同学_2939

夜婷同学_2939

2025-09-07

874人浏览

原创

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

文件,尊重网站的抓取策略,避免给对方服务器造成不必要的负担。

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

这大概是

wget

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

wget

的续传功能简直是雪中送炭。

java-api-doc-generator
java-api-doc-generator

分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。

下载

核心选项是

-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

就是我的首选。它们各有侧重,互为补充,理解它们的差异能让你在面对不同的网络任务时,选择最合适的工具。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

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

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

2025.11.26

564

16

curl_exec
curl_exec

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

2023.06.14

3783

6

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

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

2023.10.30

875

4

java break和continue
java break和continue

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

2025.10.24

827

6

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

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

2023.10.19

3208

3

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

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

2025.10.17

5169

12

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

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

2025.12.29

3849

9

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

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

2026.01.19

486

15

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

2023.11.13

3291

4

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习