Bash-Oneliner下载神器:curl与wget高级用法全解析
你还在重复造轮子?一文掌握Linux下载工具终极技巧
当你第N次手动拼接URL批量下载文件时,当服务器突然断开导致3GB文件需重新下载时,当需要在无图形界面的服务器上监控下载进度时——是时候掌握curl与wget的高级用法了。Bash-Oneliner项目收录的300+实战命令中,这两款工具的使用频率高达27%,本文将系统梳理其20+高级特性,带你从"会用"到"精通",构建高效下载工作流。读完本文,你将获得:
- 断点续传:大文件下载中断后无需从头开始
- 批量任务:一行命令处理1000+URL的并行下载
- 带宽控制:避免下载抢占业务带宽的完美方案
- 认证穿透:搞定各种复杂的登录验证与Cookie机制
- 监控告警:下载完成自动发送邮件通知的实现
curl与wget功能对比:谁才是你的最佳拍档?
核心能力矩阵
| 功能特性 | curl | wget | 适用场景 |
|---|---|---|---|
| 断点续传 | -C - | -c/--continue | 网络不稳定环境 |
| 限速下载 | --limit-rate 1M | --limit-rate=1M | 共享服务器带宽 |
| 批量下载 | -Z(实验性) | -i url_list.txt | 多文件队列处理 |
| 递归镜像 | ❌ | -m/--mirror | 整站备份 |
| 表单提交 | -F "file=@data.txt" | --post-data "key=val" | API接口测试 |
| HTTPS证书忽略 | -k/--insecure | --no-check-certificate | 内部测试服务器 |
| 进度条输出 | -# | -q --show-progress | 终端环境监控 |
| 后台运行 | -O --output - & | -b/--background | 长时间任务 |
| 代理支持 | -x socks5://127.0.0.1:1080 | --proxy socks5://127.0.0.1:1080 | 跨境资源获取 |
| 认证支持 | -u user:pass | --user user:pass | 需登录的资源 |
性能测试对比
断点续传:大文件下载的救世主
基础断点续传实现
# curl断点续传(自动识别已下载部分)
curl -C - -O https://example.com/large_file.iso
# wget断点续传(需手动指定)
wget -c https://example.com/large_file.iso
高级断点续传场景
# 恢复上次中断的curl下载会话
curl -C - -O https://example.com/large_file.iso -o download.log
# wget配合日志恢复下载
wget -c -o download.log https://example.com/large_file.iso
tail -f download.log # 实时监控下载进度
批量下载:从URL列表到全站镜像
单文件多链接下载
# 使用curl下载URL列表(每行一个URL)
curl -O https://example.com/file1.tar.gz -O https://example.com/file2.tar.gz
# 使用wget下载URL列表文件
wget -i url_list.txt -P ./downloads
高级批量下载技巧
# 下载所有PDF文件并保留目录结构
wget -r -l3 -A.pdf -np -nH --cut-dirs=2 https://example.com/docs/
# 参数说明:
# -r: 递归下载
# -l3: 最大深度3层
# -A.pdf: 仅下载PDF文件
# -np: 不追溯至父目录
# -nH: 不创建主机名目录
# --cut-dirs=2: 忽略前两级目录
动态生成URL列表
# 下载编号1-100的图片文件
curl -O "https://example.com/photos/[1-100].jpg"
# 带前导零的序列(001-100)
wget https://example.com/data_{001..100}.csv
带宽控制:做个有素质的下载者
基础限速设置
# curl限制下载速度为1MB/s
curl --limit-rate 1M -O https://example.com/large_file.zip
# wget限制下载速度为500KB/s
wget --limit-rate=500k https://example.com/large_file.zip
时间段自动限速
# 工作时间(9:00-18:00)限速500KB/s,其他时间全速
if [ $(date +%H) -ge 9 ] && [ $(date +%H) -lt 18 ]; then
wget --limit-rate=500k https://example.com/bigfile.iso
else
wget https://example.com/bigfile.iso
fi
认证与安全:突破限制的正确姿势
基础认证方式
# curl使用用户名密码认证
curl -u username:password https://secure.example.com/docs.tar.gz
# wget使用用户名密码认证
wget --user=username --password=password https://secure.example.com/docs.tar.gz
Cookie持久化
# curl保存Cookie到文件
curl -c cookies.txt -d "user=admin&pass=123" https://example.com/login
# 使用保存的Cookie访问需要登录的页面
curl -b cookies.txt https://example.com/dashboard -O report.pdf
HTTPS高级配置
# 忽略SSL证书验证(仅测试环境使用)
curl -k https://internal-server.local/file.tar.gz
# 指定CA证书文件
wget --ca-certificate=/path/to/ca.crt https://secure.example.com/data.zip
监控与自动化:无人值守的下载方案
下载进度监控
# curl显示进度条并记录日志
curl -# -o large_file.iso https://example.com/large_file.iso | tee download.log
# wget详细日志并输出进度百分比
wget -v --progress=bar:force https://example.com/file.tar.gz 2>&1 | \
grep -oP '\d+%' | tail -n1
下载完成通知
# 下载完成后发送邮件通知
curl -O https://example.com/backup.tar.gz && \
echo "Backup downloaded successfully" | mail -s "Download Complete" user@example.com
# wget后台下载并记录PID
wget -b https://example.com/large_file.iso -o download.log
echo "Download PID: $(pgrep wget)"
实战案例:企业级下载解决方案
场景需求
从需要认证的FTP服务器下载每日备份文件(约5GB),限制下载速度为2MB/s,支持断点续传,下载完成后校验MD5并发送通知。
解决方案实现
#!/bin/bash
# enterprise_downloader.sh
# 配置参数
URL="ftp://ftp.example.com/backups/daily_backup_$(date +%Y%m%d).tar.gz"
USER="backup_user"
PASS="secure_password"
DEST="/data/backups/"
LIMIT_RATE="2M"
MD5_URL="${URL}.md5"
# 创建目标目录
mkdir -p "$DEST"
# 带认证和限速的断点续传
wget -c \
--user="$USER" \
--password="$PASS" \
--limit-rate="$LIMIT_RATE" \
--output-document="${DEST}/daily_backup.tar.gz" \
"$URL"
# 下载MD5文件并校验
wget --user="$USER" --password="$PASS" -O "${DEST}/daily_backup.tar.gz.md5" "$MD5_URL"
cd "$DEST" && md5sum -c daily_backup.tar.gz.md5
# 校验成功发送通知
if [ $? -eq 0 ]; then
echo "Backup downloaded and verified successfully" | \
mail -s "Daily Backup Ready" admin@example.com
else
echo "Backup verification failed" | \
mail -s "Backup Alert" admin@example.com
fi
总结:构建你的下载工具箱
本文系统介绍了curl与wget的高级用法,从断点续传到批量下载,从带宽控制到安全认证,覆盖了90%的企业级下载场景。关键收获包括:
- 工具选择策略:简单下载用wget,复杂交互用curl
- 参数组合技巧:限速+断点+日志是生产环境黄金组合
- 自动化框架:结合bash脚本实现监控、校验和通知闭环
- 安全最佳实践:避免在命令行暴露密码,优先使用Cookie或证书
立即克隆项目体验这些下载神器:
git clone https://gitcode.com/GitHub_Trending/ba/Bash-Oneliner
cd Bash-Oneliner
grep -r "curl\|wget" ./docs # 探索更多实战命令
你在工作中遇到过哪些下载难题?欢迎在项目Issues中分享,我们将持续补充更多实战场景解决方案!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



