怎样使用wget和curl下载文件?
常见问题
怎样使用wget和curl下载文件?
2026-01-02 07:34
掌握文件下载利器:
掌握文件下载利器:wget与curl的完全使用指南
在网络管理和日常工作中,从互联网上下载文件是一项基础而频繁的任务。虽然图形界面工具简单直观,但在自动化脚本、服务器环境或无图形界面的系统中,命令行工具显得更为强大和高效。本文将深入探讨两个最常用的命令行下载工具:wget和curl,详细讲解它们的使用方法、核心区别以及实用技巧,帮助您提升工作效率。
一、 wget:强大的递归下载专家
wget 是一个非交互式的网络下载器,以其强大的递归下载能力而闻名。它支持HTTP、HTTPS和FTP协议,并能很好地处理断点续传。
1. 基本下载命令
wget [选项] [URL]
最简单的用法是直接跟上文件链接:
wget https://example.com/file.zip
2. 常用选项详解
- -O [文件名]:指定下载后保存的文件名。
wget -O myfile.zip https://example.com/file.zip
-P [目录路径]:指定文件下载目录。
wget -P /home/user/downloads https://example.com/file.zip
-c:启用断点续传功能,如果下载中断,重新执行此命令可以从中断处继续下载。
wget -c https://example.com/large-file.iso
-r:递归下载,常用于下载整个网站。
wget -r https://example.com/
-np:与递归下载结合使用,不追溯至父目录。
-l [深度]:设置递归下载的最大深度。
3. 高级应用场景
镜像整个网站:
wget -mk -w 2 https://example.com/
其中 -m 表示镜像模式,-k 转换链接以适应本地查看,-w 2 设置每次请求间隔2秒,以减轻服务器负担。
从文本文件批量下载:
wget -i url_list.txt
其中 url_list.txt 是每行包含一个URL的文本文件。
二、 curl:多功能的数据传输瑞士军刀
curl 是一个功能更广泛的工具,不仅支持文件下载,还支持上传、支持更多协议(如SCP, SFTP, LDAP等),并且能更灵活地处理HTTP请求。它默认将输出显示在标准输出(stdout)。
1. 基本下载命令
curl [选项] [URL]
直接使用curl下载文件时,需要指定输出文件:
curl -o saved_file.html https://example.com
2. 常用选项详解
- -o [文件名]:将输出写入指定文件。
- -O:使用服务器上的文件名保存文件。
curl -O https://example.com/files/document.pdf
-C -:实现断点续传。“-”表示让curl自动查找已下载部分的偏移量。
curl -C - -O https://example.com/large-file.zip
-L:跟随重定向。很多网站会使用重定向,此选项至关重要。
-H:自定义请求头。例如模拟浏览器:
curl -H "User-Agent: Mozilla/5.0" https://example.com
-x [代理]:通过代理服务器下载。
-u [用户:密码]:用于需要认证的网站。
3. 高级应用场景
测试API接口:
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/endpoint
限速下载:
curl --limit-rate 100k -O https://example.com/file.zip
此命令将下载速度限制在每秒100KB。
仅获取HTTP头部信息:
curl -I https://example.com
三、 wget 与 curl 的核心区别与选择建议
特性
wget
curl
主要设计目的
下载文件,尤其是递归下载。
传输数据,支持双向操作(上传/下载)。
协议支持
HTTP, HTTPS, FTP.
极其广泛,包括HTTP, HTTPS, FTP, SCP, SFTP, LDAP, DICT, TELNET等。
默认行为
直接下载文件到当前目录。
将输出内容显示在终端。必须用 -o 或 -O 保存文件。
递归下载
内置且强大,是其核心功能。
不支持原生递归下载。
脚本友好性
较好。
极好,输出和错误处理更精细,常用于API交互。
选择建议:
- 当你需要简单、稳定地下载一个或递归下载一系列文件时,选择 wget。
- 当你需要进行复杂的HTTP请求、测试API、处理多种协议或需要更精细的控制时,选择 curl。
四、 安全下载实践与注意事项
- 验证文件完整性:下载后,使用md5sum或sha256sum校验文件哈希值,尤其是从非官方源下载时。
- 使用HTTPS:尽可能使用HTTPS链接以确保传输过程加密。
- 注意权限:避免使用root权限下载不明文件到系统目录。
- 尊重robots.txt:在递归下载网站前,请检查并尊重目标网站的robots.txt协议。
- 设置延迟:在批量或递归下载时,使用
-w (wget) 或 --delay (curl) 选项设置请求间隔,做有礼貌的网络公民。
wget和curl是Linux/Unix世界和开发者工具箱中不可或缺的瑰宝。wget以其“设置好即可离开”的递归下载能力见长,而curl则以其协议支持和灵活性取胜。理解它们各自的优势并熟练运用,不仅能高效完成日常下载任务,还能在自动化脚本和系统管理中大放异彩。建议读者在命令行中亲自尝试本文列举的示例,结合实际需求,逐步掌握这两款强大工具的精髓。
掌握文件下载利器:wget与curl的完全使用指南
在网络管理和日常工作中,从互联网上下载文件是一项基础而频繁的任务。虽然图形界面工具简单直观,但在自动化脚本、服务器环境或无图形界面的系统中,命令行工具显得更为强大和高效。本文将深入探讨两个最常用的命令行下载工具:wget和curl,详细讲解它们的使用方法、核心区别以及实用技巧,帮助您提升工作效率。
一、 wget:强大的递归下载专家
wget 是一个非交互式的网络下载器,以其强大的递归下载能力而闻名。它支持HTTP、HTTPS和FTP协议,并能很好地处理断点续传。
1. 基本下载命令
wget [选项] [URL]
最简单的用法是直接跟上文件链接:
wget https://example.com/file.zip
2. 常用选项详解
- -O [文件名]:指定下载后保存的文件名。
wget -O myfile.zip https://example.com/file.zip
wget -P /home/user/downloads https://example.com/file.zip
wget -c https://example.com/large-file.iso
wget -r https://example.com/
3. 高级应用场景
镜像整个网站:
wget -mk -w 2 https://example.com/
其中 -m 表示镜像模式,-k 转换链接以适应本地查看,-w 2 设置每次请求间隔2秒,以减轻服务器负担。
从文本文件批量下载:
wget -i url_list.txt
其中 url_list.txt 是每行包含一个URL的文本文件。
二、 curl:多功能的数据传输瑞士军刀
curl 是一个功能更广泛的工具,不仅支持文件下载,还支持上传、支持更多协议(如SCP, SFTP, LDAP等),并且能更灵活地处理HTTP请求。它默认将输出显示在标准输出(stdout)。
1. 基本下载命令
curl [选项] [URL]
直接使用curl下载文件时,需要指定输出文件:
curl -o saved_file.html https://example.com
2. 常用选项详解
- -o [文件名]:将输出写入指定文件。
- -O:使用服务器上的文件名保存文件。
curl -O https://example.com/files/document.pdf
curl -C - -O https://example.com/large-file.zip
curl -H "User-Agent: Mozilla/5.0" https://example.com
3. 高级应用场景
测试API接口:
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/endpoint
限速下载:
curl --limit-rate 100k -O https://example.com/file.zip
此命令将下载速度限制在每秒100KB。
仅获取HTTP头部信息:
curl -I https://example.com
三、 wget 与 curl 的核心区别与选择建议
| 特性 | wget | curl |
|---|---|---|
| 主要设计目的 | 下载文件,尤其是递归下载。 | 传输数据,支持双向操作(上传/下载)。 |
| 协议支持 | HTTP, HTTPS, FTP. | 极其广泛,包括HTTP, HTTPS, FTP, SCP, SFTP, LDAP, DICT, TELNET等。 |
| 默认行为 | 直接下载文件到当前目录。 | 将输出内容显示在终端。必须用 -o 或 -O 保存文件。 |
| 递归下载 | 内置且强大,是其核心功能。 | 不支持原生递归下载。 |
| 脚本友好性 | 较好。 | 极好,输出和错误处理更精细,常用于API交互。 |
选择建议:
- 当你需要简单、稳定地下载一个或递归下载一系列文件时,选择 wget。
- 当你需要进行复杂的HTTP请求、测试API、处理多种协议或需要更精细的控制时,选择 curl。
四、 安全下载实践与注意事项
- 验证文件完整性:下载后,使用md5sum或sha256sum校验文件哈希值,尤其是从非官方源下载时。
- 使用HTTPS:尽可能使用HTTPS链接以确保传输过程加密。
- 注意权限:避免使用root权限下载不明文件到系统目录。
- 尊重robots.txt:在递归下载网站前,请检查并尊重目标网站的robots.txt协议。
- 设置延迟:在批量或递归下载时,使用
-w(wget) 或--delay(curl) 选项设置请求间隔,做有礼貌的网络公民。
wget和curl是Linux/Unix世界和开发者工具箱中不可或缺的瑰宝。wget以其“设置好即可离开”的递归下载能力见长,而curl则以其协议支持和灵活性取胜。理解它们各自的优势并熟练运用,不仅能高效完成日常下载任务,还能在自动化脚本和系统管理中大放异彩。建议读者在命令行中亲自尝试本文列举的示例,结合实际需求,逐步掌握这两款强大工具的精髓。
标签:
- wget
- curl
- file download
- 莱卡云
