收起左侧

分享飞牛docker安装群晖使用cloudsync同步网盘

0
回复
62
查看
[ 复制链接 ]

2

主题

4

回帖

0

牛值

江湖小虾

在飞牛之前一直都是用群晖系统,后看飞牛不错,目前已经全部专用飞牛NAS。不过飞牛的备份不太好用,尤其与网盘同步是经常出错且没有增量备份。

而群晖的cloudsync确实好用,因此就想办法通过docker安装群晖并将飞牛目录挂载到群晖,利用cloudsync进行同步。

因群晖的file station提供远程挂载功能,但是挂载的目录不能用于cloudsync同步,因此需要使用rclone将飞牛目录挂载到群晖指定的目录才可行。

  1. docker部署群晖,具体到https://github.com/vdsm/virtual-dsm了解如何部署

  2. 群晖开启ssh, 并通过ssh安装rclone

    curl https://rclone.org/install.sh | sudo bash

    配置rclone config, 我是使用webdav连接飞牛,长期运行后比较稳定,很少出现断连。

  3. 群晖设置开机启动挂载飞牛目录,群晖的控制面板-任务计划-新增 触发的任务,选择用户root,开机运行,代码如下:/volume1/file/fnnos需根据实际情况改为群晖的挂载目录

    #!/bin/sh
    
    synopkg stop CloudSync
    # 等待系统核心服务完全启动,避免因网络未就绪而挂载失败
    sleep 30
    
    # 首先尝试卸载,防止重复挂载(如果之前不干净关机)
    /usr/bin/rclone mount fnos: /volume1/file/fnnos \
      --config /root/.config/rclone/rclone.conf \
      --allow-other \
      --allow-non-empty \
      --daemon
    
    # 可选:记录日志,便于排查问题
    echo "Rclone mount script executed at $(date)" >> /volume1/file/rclone_mount.log
    
    sleep 30
    synopkg start CloudSync
    

以上代码是防止群晖在没有完成挂载就运行cloudsync而导致找不到同步目录的错误。

  1. 设置cloudsync的同步配置

    以上对于百度网盘的同步很友好。

    对于其他网盘,如阿里、115、123、夸克等,cloudsync没有提供接入。但是可以通过飞牛OS的远程挂载后再用cloudsync的webdav挂载实现同步。需要将网盘使用飞牛OS远程挂载。然后修改远程挂载的目录。

    具体飞牛OS修改远程挂载目录方法如下:

    ssh连接飞牛,用nano或vim编辑/etc/mountmgr/mout_info.json文件中各个远程挂载的"mountPoint",指定至飞牛自定义的挂载目录。然后运行systemctl restart nfs-server.service重启挂载服务。

    另外,群晖通过rclone挂载有时也难免出现错误,一旦无法挂载,cloudsync找不到同步目录就会出错,而这些错误即使停止cloudsync再重新启动也不会恢复,只能重新设置同步目录等,非常繁琐。出现同步目录不存在时,可以通过ssh运行以下脚本恢复:

    #!/bin/sh
    
    # 群晖CloudSync错误修复脚本
    # 描述:停止CloudSync服务,重置数据库中的错误状态,然后重新启动服务
    
    echo "开始执行CloudSync错误修复脚本..."
    
    # 1. 停止CloudSync服务
    echo "正在停止CloudSync服务..."
    synopkg stop CloudSync
    if [ $? -ne 0 ]; then
        echo "错误: 无法停止CloudSync服务"
        exit 1
    fi
    
    # 2. 等待10秒确保服务完全停止
    echo "等待服务停止..."
    sleep 10
    
    # 3. 切换到CloudSync数据库目录
    echo "切换到CloudSync数据库目录..."
    cd /volume1/@cloudsync/db
    if [ $? -ne 0 ]; then
        echo "错误: 无法访问CloudSync数据库目录"
        exit 1
    fi
    
    # 4-7. 使用SQLite3处理数据库
    echo "正在处理数据库..."
    
    # 先显示当前错误状态
    echo "当前错误状态:"
    sqlite3 config.sqlite "SELECT sync_folder, error FROM session_table;"
    
    # 重置错误状态
    echo "正在重置错误状态..."
    sqlite3 config.sqlite "UPDATE session_table SET error = 0 WHERE error != 0;"
    
    # 显示重置后的结果
    echo "错误状态已重置,重置数量:"
    sqlite3 config.sqlite "SELECT changes() as 重置的错误数量;"
    
    # 检查SQLite命令执行状态
    if [ $? -ne 0 ]; then
        echo "错误: 数据库操作失败"
        exit 1
    fi
    
    # 8. 再次等待10秒
    echo "等待服务重启准备..."
    sleep 10
    
    # 9. 重新启动CloudSync服务
    echo "正在启动CloudSync服务..."
    synopkg start CloudSync
    if [ $? -ne 0 ]; then
        echo "错误: 无法启动CloudSync服务"
        exit 1
    fi
    
    echo "CloudSync错误修复脚本执行完成!"
    echo "服务已重新启动,所有错误状态已重置。"
    
    
收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则