如何编写带断点续传能力的自动备份拉取脚本应对跨国高丢包恶劣物理网络环境

千婷酱_3823

千婷酱_3823

2026-07-05

348人浏览

原创

rsync支持断点续传,核心是--partial保留中断文件、双端块级校验比对差异、配合ssh健壮参数(如serveraliveinterval)及超时控制,实现真正可恢复传输。

如何编写带断点续传能力的自动备份拉取脚本应对跨国高丢包恶劣物理网络环境

在跨国高丢包、高延迟、连接不稳定的网络环境下,普通 rsync 或 wget 拉取备份容易因超时或中断失败,且重试成本高。关键不是“重试”,而是“可恢复”——即每次传输中断后,能从断点继续,不重复下载已成功接收的数据块。

用 rsync + SSH 配置断点续传拉取(推荐首选)

rsync 本身支持增量同步和部分传输恢复,配合合理参数可在丢包环境中稳定工作:

  • 使用 --partial:保留传输中断时的不完整文件,下次继续写入而非重下
  • 启用 --progress 和 --stats 方便监控;加 --timeout=60 避免单次卡死过久
  • 通过 -e "ssh -o ConnectTimeout=15 -o ServerAliveInterval=30 -o ServerAliveCountMax=3" 强化 SSH 层健壮性
  • 务必加 --delete-after(慎用 --delete),避免误删本地已有但远程暂未同步完的文件
  • 示例命令:
    rsync -avz --partial --timeout=60 -e "ssh -o ConnectTimeout=15 -o ServerAliveInterval=30" user@remote:/backup/20240601/ /local/backup/

对大文件用 wget 或 curl 分块+校验续传

当目标是单个超大备份文件(如数据库 dump),rsync 可能受限于远程文件系统不支持硬链接或无 rsync daemon。此时用 wget 或 curl 更直接:

MiniMax 媒体生成
MiniMax 媒体生成

一款AI音频处理工具,主要用于MiniMax统一媒体生成技能,用于TokenPlan工作流。当用户要求生成音频、语音、TTS、旁白、图片、插图、姿势等媒体内容时使用,适合需要提升相关任务效率的用户。

下载
  • wget -c -t 0 --retry-connrefused --wait=2 --random-wait URL
    -c 启用断点续传,-t 0 无限重试,--retry-connrefused 对连接拒绝也重试
  • curl -C - --retry 10 --retry-delay 3 --max-time 600 -o file.zip URL
    -C - 表示从本地文件当前大小处继续,需确保文件名不变且未被其他进程修改
  • 建议搭配 SHA256 校验:先拉取 file.zip.sha256,下载完成后 sha256sum -c file.zip.sha256 验证完整性,失败则自动清理重试

封装为带状态跟踪与自动重试的 shell 脚本

单纯命令不够,需记录进度、控制并发、避免雪崩重试:

  • 用临时标记文件(如 .fetching.lock 和 .fetched.sha256)标识当前任务状态
  • 每次运行前检查本地文件是否存在且校验通过,跳过已完成项
  • 设置指数退避重试:第1次等5秒,第2次等15秒,第3次等45秒……避免密集刷请求加重网络负担
  • 日志中记录每次 start/end 时间、传输字节数、退出码,便于事后分析丢包时段规律
  • 可加入简单熔断逻辑:连续3次超时后暂停1小时,防止无效轮询耗尽资源

补充增强策略(非必须但强烈建议)

物理层不可控,但可优化协议层和调度层应对:

  • 让远端开启 rsync daemon(非 SSH 模式),使用 --port 指定非标准端口,减少被中间防火墙 reset 的概率
  • 在远端压缩备份(如 tar -czf),拉取后再解压,降低传输量和失败窗口
  • 若允许,将备份推送到近地 CDN 或对象存储(如 AWS S3 / 阿里 OSS),再从就近节点拉取,绕过直连跨国链路
  • 定期用 mtr 或 ping -R 抓取路由路径变化,发现劣化节点后协调 ISP 或切换隧道出口

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3930

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3373

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2513

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6090

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5722

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3353

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2865

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3079

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习