wget
和 curl
是 Linux 中两个常用的命令行工具,用于从网络下载文件或与 Web 服务器交互。虽然它们的功能有重叠,但在设计目标和使用场景上有一些区别。以下是它们的详细对比以及参数演示。
1. wget
和 curl
的区别
特性 | wget | curl |
---|---|---|
设计目标 | 专注于文件下载 | 专注于数据传输(支持多种协议) |
协议支持 | 支持 HTTP、HTTPS、FTP | 支持更多协议(如 HTTP、HTTPS、FTP、SFTP、SCP、SMTP 等) |
递归下载 | 支持递归下载整个网站 | 不支持递归下载 |
断点续传 | 支持断点续传 | 支持断点续传 |
输出 | 默认将下载的文件保存到本地 | 默认将输出打印到终端 |
脚本集成 | 更适合自动化下载任务 | 更适合与脚本集成(如 API 调用) |
上传功能 | 不支持上传 | 支持上传文件 |
性能 | 下载大文件时性能较好 | 更适合小文件传输和 API 调用 |
用户交互 | 非交互式,适合后台运行 | 交互式,适合调试和测试 |
2. wget
参数详解及演示
(1) 基本语法
wget [选项] [URL]
(2) 常用参数及演示
下载文件
wget https://example.com/file.zip
断点续传
wget -c https://example.com/large-file.zip
递归下载整个网站
wget -r https://example.com
限制下载速度
wget --limit-rate=200k https://example.com/file.zip
后台下载
wget -b https://example.com/file.zip
批量下载
将 URL 列表保存到 urls.txt
,然后使用:
wget -i urls.txt
下载页面及其资源
wget -p https://example.com/page.html
下载指定类型的文件
wget -r -A "*.jpg,*.png" https://example.com
忽略 SSL 证书验证
wget --no-check-certificate https://example.com
设置用户代理
wget -U "Mozilla/5.0" https://example.com
3. curl
参数详解及演示
(1) 基本语法
curl [选项] [URL]
(2) 常用参数及演示
下载文件
curl -O https://example.com/file.zip
发送 HTTP 请求
curl -X GET https://api.example.com/data
上传文件
curl -F "file=@localfile.zip" https://example.com/upload
显示响应头
curl -I https://example.com
保存输出到文件
curl -o output.txt https://example.com
断点续传
curl -C - -O https://example.com/large-file.zip
发送 POST 请求
curl -X POST -d "param1=value1¶m2=value2" https://example.com/api
设置请求头
curl -H "Content-Type: application/json" -H "Authorization: Bearer token" https://example.com/api
忽略 SSL 证书验证
curl -k https://example.com
显示详细输出
curl -v https://example.com
限制下载速度
curl --limit-rate 200K -O https://example.com/file.zip
4. 总结
使用 wget
的场景:
- 需要下载大文件或整个网站。
- 需要断点续传功能。
- 需要在后台运行下载任务。
- 需要简单的递归下载功能。
使用 curl
的场景:
- 需要与 API 交互(如发送 HTTP 请求)。
- 需要上传文件。
- 需要调试或测试 Web 服务。
- 需要支持多种协议(如 SFTP、SCP、SMTP 等)。
通过灵活使用 wget
和 curl
的参数,可以满足各种网络任务需求。根据具体场景选择合适的工具,可以提高工作效率。