NAS数据云备份:群晖HyperBackup数据备份到飞牛国内网盘
chongwu
2025年11月12日 22:11
如何玩转nas

记录踩坑经历。

在群晖中运行飞牛虚拟机,从而利用飞牛中各个国内网盘的官方挂载。

运用群晖的HyperBackup和CloudSync工具,将群晖内数据加密备份到各个国内网盘。

基础思路

群晖中的数据-->HyperBackup-->飞牛-->国内网盘

下文的所有尝试均集中在飞牛上。

尝试一

飞牛自带的webdav

存在问题: Hyperbackup任务根本无法运行,或者极其不稳定易中断。

尝试二

飞牛中自行安装rclone,运行rclone serve webdav

存在问题:

极其不稳定易中断。

  1. 观察日志发现,备份时,数据高速写入rclone缓存,撑爆飞牛硬盘,导致备份中断。

  2. 增加缓存大小设置没有用,因为rclone缓存中,待上传的数据不会被清除,它们会一直被保存直到被成功上传(无视缓存大小设置)。

  3. 上传到网盘的速度远远小于Hyperbackup存到缓存的速度。

  4. 我需要备份的数据有2TB,我本地自然没有额外2TB的空间做缓存。

尝试三

飞牛中自行安装rclone,运行rclone serve webdav --bwlimt 0.5M ,进行限速

存在问题:

不知道啥问题,限速失败。。。

尝试四

飞牛中自行安装docker版本rclone,运行rclone serve webdav,对docker容器进行限速

暂时成功,虽然慢,但是稳定运行两天,希望能撑住。

docker compose 如下,供参考:

version: '3.8'

services:

 rclone-serve:

  image: alpine:latest

  container_name: rclone-serve

  restart: unless-stopped

  volumes:

   - /repo:/repo

   - /cache:/cache

  ports:

   - "58395:58395"

  # 添加网络管理权限,允许容器内配置流量控制

  cap_add:

   - NET_ADMIN

  # 启动时先通过tc限制带宽,再启动rclone服务

  command: >

   sh -c "

    # 1. 安装 tc 工具(iproute2 包含 tc)和 grep(用于过滤接口)

    sed -i 's#https\?://dl-cdn.alpinelinux.org/alpine#https://mirrors.tuna.tsinghua.edu.cn/alpine#g' /etc/apk/repositories

    apk update

    apk add --no-cache iproute2 rclone;

     

    # 重置TC配置 - 清除所有现有规则

    echo '重置TC配置...'

    tc qdisc del dev eth0 root 2>/dev/null || true

    tc qdisc del dev eth0 ingress 2>/dev/null || true

     

    # 配置带宽限制(使用动态获取的接口),并检查执行结果

    if tc qdisc add dev eth0 root tbf rate 24000kbit latency 50ms burst 50k; then

     echo '带宽上行限制配置成功(24000kbit/s)';

    else

     echo 'ERROR: 带宽限制配置失败,容器退出!';

     exit 1; # 配置失败则终止容器,避免未限流服务启动

    fi;

    # 配置接收方向(下行)带宽限制

    # 创建 ingress qdisc

    if tc qdisc add dev eth0 handle ffff: ingress; then

     echo 'ingress qdisc创建成功';

    else

     echo 'ERROR: ingress qdisc创建失败,容器退出!';

     exit 1;

    fi;

     

    # 添加下行带宽限制规则

    if tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 12000kbit burst 50k drop flowid :1; then

     echo '下行带宽限制配置成功(12000kbit/s)';

    else

     echo 'ERROR: 下行带宽限制配置失败,容器退出!';

     exit 1;

    fi;

    # 启动rclone服务

    rclone -v --bwlimit off:0.5M --low-level-retries 100 --retries 10 --buffer-size 256M --transfers 2 serve webdav /repo --addr :58395 --user usr --pass password --cache-dir /cache --vfs-cache-mode writes --no-gzip-encoding --vfs-cache-max-size 10G 

   "

结尾 欢迎大家分享好方法。