怎样使用wget和curl下载文件?

常见问题

怎样使用wget和curl下载文件?

2026-01-02 07:34


掌握文件下载利器:

                                            

掌握文件下载利器:wget与curl的完全使用指南

在网络管理和日常工作中,从互联网上下载文件是一项基础而频繁的任务。虽然图形界面工具简单直观,但在自动化脚本、服务器环境或无图形界面的系统中,命令行工具显得更为强大和高效。本文将深入探讨两个最常用的命令行下载工具:wgetcurl,详细讲解它们的使用方法、核心区别以及实用技巧,帮助您提升工作效率。

一、 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

四、 安全下载实践与注意事项

  1. 验证文件完整性:下载后,使用md5sum或sha256sum校验文件哈希值,尤其是从非官方源下载时。
  2. 使用HTTPS:尽可能使用HTTPS链接以确保传输过程加密。
  3. 注意权限:避免使用root权限下载不明文件到系统目录。
  4. 尊重robots.txt:在递归下载网站前,请检查并尊重目标网站的robots.txt协议。
  5. 设置延迟:在批量或递归下载时,使用 -w (wget) 或 --delay (curl) 选项设置请求间隔,做有礼貌的网络公民。

wget和curl是Linux/Unix世界和开发者工具箱中不可或缺的瑰宝。wget以其“设置好即可离开”的递归下载能力见长,而curl则以其协议支持和灵活性取胜。理解它们各自的优势并熟练运用,不仅能高效完成日常下载任务,还能在自动化脚本和系统管理中大放异彩。建议读者在命令行中亲自尝试本文列举的示例,结合实际需求,逐步掌握这两款强大工具的精髓。


标签:
  • wget
  • curl
  • file download
  • 莱卡云