cURL 文件下载教程:参数、用法与实例
引言
cURL(Client URL)是一个功能强大的命令行工具和库,用于通过 URL 传输数据。它支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、LDAP、LDAPS、DICT、TELNET、FILE、IMAP、POP3、SMTP、RTSP、RTMP 和 Gopher。在日常开发、系统管理以及网络调试中,cURL 因其灵活性和广泛的用途而备受青睐,尤其是在文件下载方面。
本文将详细介绍 cURL 在文件下载方面的常用参数、基本用法以及一些高级实例,帮助您充分利用 cURL 这一利器。
一、cURL 文件下载基础
默认情况下,当您使用 cURL 访问一个 URL 时,它会将获取到的内容直接输出到标准输出(即您的终端屏幕)。但对于文件下载,我们通常希望将内容保存到本地文件中。
1. 将内容输出到标准输出 (默认行为)
这是 cURL 的默认行为,如果您只是想快速查看文件的内容,这非常有用。
bash
curl https://example.com/path/to/file.txt
2. 保存为原文件名 (-O, --remote-name)
如果您希望将下载的文件保存为与远程服务器上相同的原始文件名,可以使用大写的 -O 参数。
bash
curl -O https://example.com/path/to/document.pdf
3. 保存为指定文件名 (-o, --output)
当您需要将下载的文件保存为自定义的本地文件名时,可以使用小写的 -o 参数,后面跟着您希望的文件名。
bash
curl -o my_local_report.pdf https://example.com/path/to/document.pdf
二、常用下载参数详解
cURL 提供了大量参数来精细控制下载行为。以下是一些最常用和重要的参数:
1. 断点续传 (-C -, --continue-at -)
如果您的下载因网络问题或其他原因中断,cURL 可以从上次中断的地方继续下载,这对于下载大文件尤其有用。使用 -C - 参数,cURL 会自动检测本地已下载部分的大小,并通知服务器从该位置开始传输剩余数据。
bash
curl -C - -O https://example.com/large_archive.zip
2. 跟随重定向 (-L, --location)
许多网站会使用 HTTP 重定向(例如,从 HTTP 到 HTTPS,或从短链接到最终资源)。默认情况下,cURL 不会跟随这些重定向,而是会显示重定向的响应头信息。使用 -L 参数,cURL 会自动跟随所有重定向,直到找到最终的资源。
bash
curl -L -O https://short.url/redirected_file.tar.gz
3. 限制下载速度 (--limit-rate)
为了避免 cURL 占用过多的网络带宽,您可以使用 --limit-rate 参数来限制下载速度。您可以指定一个速率值,支持 k(千字节)、m(兆字节)、g(吉字节)等单位。
“`bash
将下载速度限制在 500 KB/s
curl –limit-rate 500k -O https://example.com/very_large_video.mp4
“`
4. 静默模式 (-s, --silent)
在脚本或自动化任务中,您可能不希望 cURL 显示下载进度或错误信息。-s 参数会抑制所有这些输出,只输出实际下载的数据。
bash
curl -s -o log.txt https://example.com/server_log.txt
5. 显示进度条 (-#, --progress-bar)
如果您希望在终端中看到一个简洁的进度条,而不是详细的进度信息,可以使用 -# 参数。
bash
curl -# -O https://example.com/software_update.exe
6. 不验证 SSL 证书 (-k, --insecure)
当您连接到使用自签名证书或无效 SSL 证书的服务器时,cURL 默认会拒绝连接。-k 参数会禁用 SSL 证书验证。请谨慎使用此选项,因为它会降低连接的安全性,仅在您完全信任目标服务器的情况下使用。
bash
curl -k -O https://untrusted-server.com/test_data.json
7. 重试失败下载 (--retry)
如果下载因为临时网络问题或服务器繁忙而失败,cURL 可以自动重试指定次数。
“`bash
失败时重试 3 次
curl –retry 3 -O https://example.com/unstable_download.bin
“`
8. 设置超时 (--max-time)
为了防止 cURL 在连接或下载过程中无限期地等待,您可以使用 --max-time 参数设置一个最大允许时间(秒)。
“`bash
如果下载在 60 秒内未完成,则超时
curl –max-time 60 -O https://example.com/slow_server_file.txt
“`
三、高级用法与实例
除了上述基础参数,cURL 还能处理更复杂的下载场景。
1. 下载多个文件
-
使用多个
-O参数:
在同一条命令中指定多个-O参数和 URL,可以下载多个文件。bash
curl -O https://example.com/file1.txt -O https://example.com/file2.txt -
使用花括号表达式
{}(Brace Expansion):
对于具有连续或相似命名模式的文件,可以使用花括号来简化命令。“`bash
下载 image1.jpg, image2.jpg, image3.jpg
curl -O https://example.com/images/image{1..3}.jpg
下载 report_jan.pdf 和 report_feb.pdf
curl -O https://example.com/reports/{report_jan,report_feb}.pdf
“` -
从文件列表下载 (结合
xargs):
如果您的下载 URL 存储在一个文本文件中(每行一个 URL),可以结合xargs来批量下载。urls.txt文件内容示例:
https://example.com/doc1.pdf
https://example.com/doc2.pdf
https://example.com/doc3.pdf下载命令:
bash
xargs -n 1 curl -O < urls.txt
2. 处理认证
从受保护的资源下载文件时,cURL 支持多种认证方式。
-
基本认证 (
-u,--user):
对于需要用户名和密码的基本认证,可以直接在参数中提供。bash
curl -u 用户名:密码 -O https://example.com/protected/archive.zip
注意: 在命令行中直接输入密码存在安全风险,在自动化脚本中应考虑更安全的凭证管理方式。 -
令牌认证 (
-H Authorization):
对于使用 API 令牌(如 Bearer Token)的认证方式,可以通过-H参数添加Authorization请求头。bash
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" -O https://api.example.com/data.json -
Cookie 处理:
一些网站需要先登录才能访问受保护资源,登录过程通常会设置 Cookie。您可以使用cURL来保存和发送 Cookie。“`bash
步骤1: 登录并保存服务器返回的 Cookie 到 cookies.txt 文件
curl -c cookies.txt -d “username=myuser&password=mypass” https://example.com/login
步骤2: 使用 cookies.txt 中的 Cookie 下载受保护的文件
curl -b cookies.txt -O https://example.com/protected/file.zip
``-c
这里,用于保存 Cookie,-b` 用于发送 Cookie。
四、总结
cURL 是一个功能极其丰富的工具,在文件下载方面提供了无与伦比的灵活性和控制力。从简单的文件保存到复杂的断点续传、认证处理和批量下载,cURL 都能轻松应对。掌握这些参数和用法,将极大地提高您在命令行环境下处理文件传输的效率。
这只是 cURL 功能的冰山一角。建议您查阅 cURL 的官方文档或使用 man curl 命令,根据具体需求探索更多高级参数和用法。The article has been generated based on the gathered information. I have included sections for introduction, basic downloads, common parameters, advanced usage (multiple files, authentication), and a conclusion. The language used is Chinese as requested.
I have completed the user’s request.