在日常开发和运维工作中,我们常常需要从远程服务器获取文件。无论是抓取一个文本文件、下载一个二进制包,还是自动化脚本批量拉取资源,cURL
都是一个非常实用的工具。它不仅支持多种协议(HTTP、HTTPS、FTP 等),还提供了丰富的参数选项,可以灵活应对各种下载场景。本文将带你系统学习如何使用 cURL
下载文件,并结合常见问题做出详细解答。
最简单的用法就是直接在终端输入:
curl https://cliproxy.com/file.txt
这会将远程文件的内容直接输出到终端,而不会保存到本地文件。如果你只是想快速查看文件内容,这种方式非常方便。
如果你希望把文件下载到本地,可以使用 -O
或 -o
参数。
-O
:保存为远程文件的原始文件名。-o
:自定义本地保存文件名。例如,如果你想把文件保存为 do-bots.txt
:
curl -o do-bots.txt https://cliproxy.com/robots.txt
这样即使远程文件名不同,你也可以按照自己的需求命名。
有些文件的下载链接会经过重定向(比如从短链接跳转到真实地址)。默认情况下,cURL
不会自动跟随重定向,需要加上 -L
参数:
curl -L -O https://short.url/file
这样就能正确获取最终的文件。
有些文件下载需要权限,可以分为两类:基于用户名密码 和 基于令牌。
curl -u username:password -O https://cliproxy.com/protected/file.zip
这里的 -u
参数用来传递账号和密码。
在 API 场景中,常见的是使用 Bearer Token:
curl -H "Authorization: Bearer <your_token>" -O https://cliproxy.com/api/download
这种方式更加安全,也更常见。
防止长时间卡住,可以设置超时时间:
curl --max-time 60 -O https://cliproxy.com/largefile.zip
当网络不稳定时,可以添加重试机制:
curl --retry 5 -O https://cliproxy.com/largefile.zip
如果下载被中断,可以使用 -C -
继续:
curl -C - -O https://cliproxy.com/largefile.zip
这样就不需要重新从头下载。
如果需要批量下载,可以写一个简单的脚本:
#!/bin/bash
urls=(
"https://cliproxy.com/file1.zip"
"https://cliproxy.com/file2.zip"
)
for url in "${urls[@]}"; do
curl -O "$url"
done
保存为 download.sh
并执行即可。
你可以直接在命令行中列出多个 URL:
curl -O https://cliproxy.com/file1.zip -O https://cliproxy.com/file2.zip
这会依次下载所有文件。
如果目标站点的 SSL 证书有问题(比如自签名),可能会报错。这时可以临时忽略证书验证:
curl -k -O https://cliproxy.com/file.zip
⚠️ 注意:-k
选项会降低安全性,建议仅在测试环境使用。
-L
跟踪重定向。--retry
或 -C -
。wget -r -np -k https://example.com
这样会自动下载整个站点的文件并转换链接,非常适合备份或离线浏览。
curl -X POST -H "Content-Type: application/json" \
-d '{"username":"test","password":"123456"}' \
https://api.example.com/login
这就可以直接模拟一个 API 登录请求,是 wget
无法做到的。
-O
和 -o
有什么区别?-O
:使用远程文件名保存。-o
:自定义文件名保存。使用 -C -
参数,例如:
curl -C - -O https://cliproxy.com/file.zip
可以。Windows 用户可以安装 cURL 官方版本,或者通过 Git Bash / WSL 运行。
本文介绍了使用 cURL 下载文件的各种方法,包括保存文件、重定向、身份验证、断点续传、批量下载等,并对比了 wget 和 cURL 的差异。对于日常开发者来说,cURL
是一个既轻量又强大的工具,合理使用它可以大大提升效率。
👉 如果你只是下载文件,wget
更适合;但如果涉及 API 调试、灵活的下载需求,那么 cURL
才是最佳选择。