首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >在 Linux 服务器里下载 37 GB 网盘大文件,被 curl 反复掐线后我折腾了一晚上

在 Linux 服务器里下载 37 GB 网盘大文件,被 curl 反复掐线后我折腾了一晚上

原创
作者头像
高老师
修改2025-10-19 16:51:06
修改2025-10-19 16:51:06
4630
举报

一、场景:为什么不用 wget -O 直接拉?

公司给了一台 AlmaLinux 9 最小化机器,让我把合作方放在“某度企业网盘”里的 2.mdb(37.6 GB)拖到 /data。 对方只给了“一键下载链接”——那种带签名、带 CDN 重定向、一次性 token 的长 URL,点一下就弹浏览器下载。 问题

  1. 没图形界面,只能 CLI;
  2. 链接 30 min 过期,不能先拖本地再 rz;
  3. 文件 >30 GB,必须支持断点续传,否则一旦掉线就前功尽弃。

二、踩坑全过程

① 第一反应:curl -L -o
代码语言:bash
复制
curl -L -o 2.mdb "https://download-cdn.cjjd19.com/……"
  • 现象:速度 5–6 MB/s,跑到 600 MB 左右直接 curl: (18) transfer closed with 39656257192 bytes remaining to read
  • 重试 N 次,每次断点不同,但永远下不完。
  • 原因:CDN 对单连接限时/限速,TCP 被 RST。
② 加 –retry 发现没用

curl 的 --retry 对“已建立连接但中途被掐”不会自动续传,而是重新下载,于是 0 → 600 MB → 0 → 800 MB → 0 无限循环。

③ 尝试 wget 默认模式

老机器自带 wget 1.21,没加 -c,结果一样:下到 1 GB 被掐,重新从 0 开始。

④ 换 aria2 多线程
代码语言:bash
复制
aria2c -x16 -s16 …

确实能跑满带宽,但公司防火墙对 16 并发 IP 做会话限制,反而 403 更频繁;再加上生产环境不想额外装包,需求退回到“单连接 + 断点续传”即可


三、最终 1 行命令

回到 wget,其实就缺两个参数:

  • -c 断点续传(continue from offset);
  • -O 指定输出文件名(避免默认切成 c-m70?v=5&t=… 这种鬼名字)。
代码语言:bash
复制
wget -c -O 2.mdb \
     --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
     "https://download-cdn.cjjd19.com/123-697/762bb196/1819092776-0/762bb196b71783a542f573bb1ef6cab9/c-m70?v=5&t=1760936374&s=17609363745f933d62ca851fb6301afc3ba933a68c&r=VEN4LU&bzc=1&bzs=1819092776&bzp=0&bi=2323960845&filename=2.mdb&x-mf-biz-cid=1a062af9-b76d-4322-99ac-ed3be84c737e-584000&ndcp=1&cache_type=1"

使用方法

  • 中断后 ↑ 回车 即可续传;
  • 单连接对 CDN 最友好,限速 2 MB/s 也能稳到尾;
  • 37.6 GB 实测掉线 4 次,累计 5 h 完档,md5sum 与官网一致。

四、小结 & Tips

  1. 大文件优先看 断点续传(curl -C -、wget -c),而不是重试。
  2. CDN 长链接几乎都有“单连接生存期”上限,别迷信多线程;
  3. 生产环境若不能额外装包,wget -c 是最小可用解;
  4. 链接带 token,一定加引号,防止 & 被 shell 截断;
  5. 下完记得 md5sum/sha256sum 校验,别等入库才发现坏档。

五、一键脚本(防手抖)

把下面脚本保存为 dl-big.shchmod +x dl-big.sh./dl-big.sh "你的长URL" filename.ext 即可挂机:

代码语言:bash
复制
#!/usr/bin/env bash
set -euo pipefail
URL=$1
FILE=$2
wget -c -O "$FILE" --user-agent="Mozilla/5.0" "$URL"
echo "Done. SHA256: $(sha256sum "$FILE")"

祝你以后再也不用通宵重下 30 GB 文件。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、场景:为什么不用 wget -O 直接拉?
  • 二、踩坑全过程
    • ① 第一反应:curl -L -o
    • ② 加 –retry 发现没用
    • ③ 尝试 wget 默认模式
    • ④ 换 aria2 多线程
  • 三、最终 1 行命令
  • 四、小结 & Tips
  • 五、一键脚本(防手抖)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档