wget - 非常流行,专为下载而设计
wget 是一个非交互式的命令行下载工具,它的名字来源于 "web get",它的最大特点是支持断点续传,并且在网络不稳定时非常可靠。

安装 wget
如果你的 Debian 系统默认没有安装 wget,可以使用 apt 来安装:
sudo apt update sudo apt install wget
常用 wget 命令示例
基本下载 直接下载一个 URL 指定的文件,文件名会自动识别。
wget https://www.debian.org/logos/openlogo-2.0-50.png
下载并重命名
使用 -O (大写) 选项来指定保存的文件名。
wget -O my_logo.png https://www.debian.org/logos/openlogo-2.0-50.png
后台下载
使用 -b 选项,wget 会在后台运行,并将日志输出到 wget-log 文件中,这对于下载大文件非常有用。

wget -b https://example.com/large-file.iso # 你可以继续使用终端,或者在后台查看进度 tail -f wget-log
断点续传
如果下载因网络中断,可以重新执行相同的命令,wget 会自动从上次中断的地方继续下载。
wget https://example.com/large-file.iso # ... 如果中断了 ... wget https://example.com/large-file.iso # 再次执行即可
限制下载速度
使用 --limit-rate 选项来限制下载速度,避免占用过多带宽,单位可以是 k (KB/s) 或 m (MB/s)。
# 限制下载速度为 500KB/s wget --limit-rate=500k https://example.com/large-file.iso
递归下载整个网站 这是一个非常强大的功能,可以下载整个网站(包括所有页面和资源),请谨慎使用,避免对目标服务器造成过大压力。
# -r: 递归 # -np: 不下载父目录 # -k: 将下载的页面中的链接转换为本地链接 # -p: 下载所有必要的文件来显示一个HTML页面 wget -r -np -k -p http://example.com/some_directory/
curl - 功能全面的工具,支持多种协议
curl 不仅仅是一个下载工具,它是一个功能强大的传输工具,支持 FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTSP 和 RTMP 等多种协议,它的默认行为是将输出打印到标准输出(即你的终端)。

安装 curl
同样,如果系统中没有 curl:
sudo apt update sudo apt install curl
常用 curl 命令示例
基本下载(打印到终端)
默认情况下,curl 会将文件内容打印到终端,对于文本文件(如 txt, json, html)可以直接查看。
curl https://example.com/api/data.json
下载到文件
使用 -o (小写) 选项来将输出保存到文件。
curl -o data.json https://example.com/api/data.json
使用服务器提供的文件名下载
使用 -O (大写) 选项,curl 会使用服务器上 Content-Disposition 头中指定的文件名来保存文件。
curl -O https://www.debian.org/logos/openlogo-2.0-50.png
显示下载进度
使用 或 --progress-bar 选项可以显示一个进度条。
curl -# -o large-file.iso https://example.com/large-file.iso
断点续传
使用 -C - 选项,curl 会自动检测并继续未完成的下载。
curl -C - -o large-file.iso https://example.com/large-file.iso
限制下载速度
使用 --limit-rate 选项。
curl --limit-rate=500k -o large-file.iso https://example.com/large-file.iso
apt - 下载 Debian 软件包
如果你想下载的是某个软件的安装包(.deb 文件)而不是普通的文件,那么应该使用 apt 命令。
下载 .deb 安装包但不安装
使用 download 子命令。
# 下载 nginx 的最新稳定版安装包 apt download nginx
这个命令会将 .deb 文件下载到当前目录。
下载源码包
如果你想下载软件的源代码,可以使用 source 子命令。
# 下载 nginx 的源码包 apt source nginx
这会下载一个 .dsc 文件、.orig.tar.xz 文件和 .debian.tar.xz 文件,包含了原始源码和 Debian 的修改补丁。
总结与对比
| 特性 | wget |
curl |
apt |
|---|---|---|---|
| 主要用途 | 专为下载网页和文件设计 | 通用的数据传输工具 | Debian/Ubuntu 的软件包管理器 |
| 默认行为 | 直接下载文件到本地 | 将输出打印到终端 | 管理和安装软件 |
| 断点续传 | 内置支持,非常简单 | 内置支持,非常简单 | 不适用 |
| 后台下载 | 支持 (-b) |
不支持(需配合 nohup 等) |
不适用 |
| 协议支持 | HTTP, HTTPS, FTP | 极其广泛 (HTTP, FTP, SMTP, 等) | 专门用于软件仓库 |
| 递归下载 | 非常强大和简单 | 需要配合更复杂的选项或脚本 | 不适用 |
| 下载软件包 | 不适用 | 不适用 | 专用功能 (apt download)** |
如何选择?
-
只想下载一个文件或网页?
wget通常是首选,因为它更专注于下载,命令更直观。curl也可以,特别是在需要显示进度或与管道结合使用时(curl ... | jq)。
-
需要从各种协议(不仅仅是 HTTP/FTP)传输数据?
- 必须选择
curl。
- 必须选择
-
需要下载 Debian 系统的软件安装包?
- 必须使用
apt download。
- 必须使用
-
在 Shell 脚本中需要下载文件?
- 两者都非常流行。
curl的输出到终端的特性有时在脚本中更方便处理,而wget的下载行为则更“安静”,两者都有足够的灵活性来完成脚本任务。
- 两者都非常流行。
对于绝大多数日常下载文件的需求,wget 和 curl 都能满足,你可以根据自己的习惯选择一个并熟练使用它。
