Syncthing+ECS+OSS+Alist+Rclone实现多端后台无感知同步和备份方案 ...

打印 上一主题 下一主题

主题 774|帖子 774|积分 2322

择要

通过Syncthing进行同步与版本控制,并搭建私有的Syncthing发现服务器和中继节点,使用ossfs在服务上挂载OSS目录并利用OSS容量和云盘容量进行存储。末了使用alist和rclone挂载服务器目录到电脑进行预览下载等。

注意:此文章图片链接来自github,如果无法加载图片请访问个人博客:workflow:基于syncthing+oss+云服务器的文件同步与数据备份教程 - Mr. Hu
需求


  • 数据安全,最重要的一个需求
  • 备份容量,目前需求100G左右
  • 价格不贵,百度云vip188/年,以他为尺度,浮动100左右
  • 下载速率快,最起码别是100多kb/s
  • 可预览,可以线上看看图片、视频什么的
  • 多端同步:最起码要可以把手机和电脑数据同步起来,最起码要有版本控制,以及多种同步类型
  • 自动备份:要能自动备份多个不同的文件夹,比如图片、文档什么的
思路



  • Syncthing 是多端同步的工具,其功能雷同于微力同步,但是开源,他是P2P的,这样就要求两个设备必须同时在线。
  • 使用云服务器搭建Syncthing作为中转和备份服务器,这样就可以只一个设备在线,因为云服务器是不停机的
  • 如果是必要常常同步的我选择直接存在服务器的云盘里
  • 如果是备份,我在云服务器里挂载OSS为目录,通过内网访问OSS,这样就没有流量费用
  • 使用alist挂载云服务器本地目录+rclone挂载Alist到电脑进行预览(可选)
展示

页面展示

Syncthing - 服务器




Syncthing - 电脑



Syncthing - 安卓




alist-网页




rclone-本地挂载alist




效果展示

服务器带宽 30M ,同步和备份时速率可继承,内存占用如下



  • 存储容量:云盘自带40G+OSS的40G = 80G
  • 电脑开机自启:rclone、Syncthing,完全无感
  •  手机可以后台常驻运行Syncthing,记得开启允许后台高耗电,以及设置息屏联网,实现无感同步。
优点


  • 可以无感备份与同步任何文件
  • 速率取决于你的服务器,无穷速问题
  • 数据很安全,用的都是开源项目,数据放在阿里云的服务器和OSS里,如果还不放心可以增长容灾设计
  • 可玩性较高,险些完全满足需求!
  • 手机可以常驻后台备份
缺点


  • 折腾起来比较贫困
  • 手机常驻后台会增长发热问题
  • syncthing 同步和冲突处理没有那么细的粒度
拓展


  • 偶然间可以整一个一键脚本,直接摆设
  • 香港服务器都有了,顺便整点邪术
  • 整一个服务器监控看板
  • 把UI面版都整上Https
  • 如果想可以设计docker进行摆设,必要注意容器编排和目录映射问题
预备好了吗!发车!



  • 核心:Syncthing
  • 必要:云服务器,OSS对象存储,电脑,手机
  • 数据安全:数据为本地存储,云端则为阿里云服务器+OSS,次方案使用的项目均为开源项目
  • 我的配置:阿里云香港轻量服务器(debian11),9元一年OSS尺度存储资源包,Win10条记本,安卓手机
  • 实际花费:阿里云香港轻量服务器 288/年
  • 发起选择带宽较大的轻量服务器,大可以选择本身以为便宜和稳固的,注意:服务器和oss存在地域问题!选同一个地域的,否则要nginx代理。
实操

安装Syncthing

服务器

  1. # 使用 `curl` 下载 GPG 密钥,然后使用 `apt-key` 导入密钥。
  2. sudo apt-get install curl
  3. curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
  4. # 添加官方 deb 存储库。
  5. echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
  6. # 安装`apt-transport-https`软件包
  7. sudo apt-get install apt-transport-https
  8. # 更新本地软件包索引并在 Debian 上安装syncthing。
  9. sudo apt-get update
  10. sudo apt-get install syncthing
  11. # 使用 Systemd 将 Syncthing 设置为系统服务 替换username为自己的账户名称
  12. sudo systemctl enable syncthing@username.service
  13. # 修改`/home/username/.config/syncthing/config.xml`中的`gui`标签,把`127.0.0.1`改成`0.0.0.0`,开启远程访问
  14. # 如果你的usernam为root,那么config.xml在/root/.local/state/syncthing
  15. vim /root/.local/state/syncthing/config.xml
  16. # 启动syncthing服务
  17. systemctl restart syncthing@username.service
  18. # 设置开机启动
  19. systemctl enable syncthing@username.service
  20. # 检查状态
  21. systemctl status syncthing@username.service
  22. # 在阿里云控制台放通8384端口,访问`http://host_ip:8384`,就可以看到面版了
复制代码
PC

访问:Github下载windows版本的Syncthing,直接运行即可
开机自启,后台运行:

  • 创建bat文件写入
  1. start "Syncthing" syncthing.exe -no-console -no-browser
复制代码

  • 创建快捷方式后,Win+R 输入 shell:startup,把快捷方式拖进去
Android

访问:Github下载android版本的Syncthing,直接运行即可,给足权限,让他常驻后台
服务器挂载OSS

oss的创建与配置

资源包购买:阿里云登录 - 欢迎登录阿里云,安全稳固的云计算服务平台
bucket创建:阿里云登录 - 欢迎登录阿里云,安全稳固的云计算服务平台


  • 名称随意
  • 地域选择和本身服务器相同的地方
  • 私有读写即可,因为我们是通过服务器出的公网流量,服务器和oss之间的访问用内网就行了,免费且高速,缺点是oss的访问速率全看服务器的带宽了。
示例: ECS地域

OSS地域

挂载OSS到ECS

  1. # 更新索引
  2. sudo apt-get -y update
  3. # 安装ossfs
  4. sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev \
  5.                     libfuse-dev libssl-dev libxml2-dev make pkg-config
  6. # 克隆编译代码
  7. git clone https://github.com/aliyun/ossfs.git
  8. cd ossfs
  9. ./autogen.sh
  10. ./configure
  11. make
  12. sudo make install
  13. # 配置全局密钥,输入OSS对应的key和secret,不知道怎么获取看这个:
  14. # https://blog.csdn.net/weixin_45606067/article/details/114292972
  15. # my-access-key-id 你的key
  16. # my-access-key-secret 你的secret
  17. echo my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
  18. chmod 600 /etc/passwd-ossfs
  19. # 挂载oss目录
  20. # my-bucket是你的bucket名称
  21. # /path/to/mountpoint是你挂载到的服务器上的目录
  22. # my-oss-endpoint是你oss的访问域
  23. ossfs my-bucket /path/to/mountpoint -ourl=my-oss-endpoint
  24. # 查看挂载情况(可选)
  25. df | grep ossfs
  26. # 详细情况(可选)
  27. # /root/Data/OSS 是挂载的路径
  28. df -hT  /root/Data/OSS
  29. # 删除挂载点(可选)
  30. sudo umount /root/Data/OSS
复制代码
安装alist(可选)

服务器摆设alist

  1. # 默认安装在 `/opt/alist` 中。
  2. # 自定义安装路径,将安装路径作为第二个参数添加,必须是绝对路径(如果路径以 alist 结尾,则直接安装到给定路径,否则会安装在给定路径 alist 目录下)
  3. # 如 安装到 `/root`
  4. curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install /root
  5. # 启动
  6. systemctl start alist
  7. # 状态
  8. systemctl status alist
  9. # 重启
  10. systemctl restart alist
  11. # 手动设置一个密码,`NEW_PASSWORD`是指你需要设置的密码
  12. ./alist admin set NEW_PASSWORD
复制代码
alist挂载服务器目录



  • 选择本机存储
  • 发起挂载OSS地点路径,比如 /root/Data/OSS
  • 也可以挂载本身服务器备份数据的地方,怎么方便怎么来


编辑
rclone挂载alist到电脑

下载:rclone和winfsp
配置:

  • 把含有exe文件的目录添加到体系情况变量
  • 打开cmd运行窗口使用指令
    1. rclone config
    复制代码
    修改配置

    • 填写alist登录账号
    • 选择webdav
    • 选择其他
    • 输入挂载到本地的名称
    • 用户名称就输alist账号
    • 输入y填写并确认alist暗码
    • 按3下enter并输入q退出

开机自动挂载:


  • 新建bat,输入以下内容,再双击查察是否乐成运行
  1. # 第一个alist是之前设置的挂载到本地的名称
  2. # alist:/ 表示挂载根目录
  3. # D:/alist 本地的哪个路径
  4. @echo off
  5. rclone mount alist:/ D:/alist --vfs-cache-mode full --use-mmap --allow-other --no-check-certificate --no-gzip-encoding --copy-links
复制代码


  • 创建任务计划,通过在Windows搜刮框中输入"任务计划程序"找到并打开,创建根本任务,触发器选 计算机启动时,选择 启动程序 后路径选择刚刚创建的bat文件,完成创建
  • 右键点击该任务,选择“属性”,在“常规”选项卡中,勾选“使用最高权限运行”,在“操作”选项卡中,点击“编辑”(Edit)在“编辑操作”窗口中,在bat路径前添加cmd.exe /c,并在“添加参数”中输入/c start "" /b "C:\path\to\your\mount_alist.bat"。
这样就可以开机后,rclone在后台无感运行了
配置Syncthing

搭建发现服务器

先通过发现服务器 (Discosrv)发现和索引用户,当用户设备接入发现服务器后,服务器会进行设备的毗连通告,当设备之间同意毗连后进行毗连;两台设备建立毗连后,数据必要通过 NAT 穿透的方式实现交换。
  1. # 仓库在:https://github.com/syncthing/discosrv/releases,想用新的直接换新链接就行
  2. wget https://github.com/syncthing/discosrv/releases/download/v1.23.4/stdiscosrv-linux-amd64-v1.23.4.tar.gz
  3. # 解压
  4. tar -xzvf  stdiscosrv-linux-amd64-v1.23.4.tar.gz
  5. # 运行
  6. # 官方文档:https://docs.syncthing.net/users/stdiscosrv.html
  7. ./stdiscosrv
  8. # 后台运行
  9. nohup ./stdiscosrv &
  10. # 使用jobs查看运行情况
  11. jobs
复制代码
搭建中继节点

如果 NAT 穿透不乐成,就必要中继 (Relaysrv)服务器传输数据,假如电脑要和手机进行条记同步,通信过程就是:电脑-中继-手机,固然Syncthing自带有公共网络服务,但是此文章使用云服务器就是为了搭建一个中继的通信过程
  1. # 仓库在:https://github.com/syncthing/discosrv/releases,想用新的直接换新链接就行
  2. wget https://github.com/syncthing/relaysrv/releases/download/v1.22.1/strelaysrv-linux-amd64-v1.22.1.tar.gz
  3. # 解压
  4. tar -xzvf  strelaysrv-linux-amd64-v1.22.1.tar.gz
  5. # 运行
  6. # https://docs.syncthing.net/users/strelaysrv.html
  7. # pools为空是不加入公共中继节点,部署为私有
  8. ./strelaysrv -pools=""
  9. # 后台运行
  10. nohup ./strelaysrv -pools=""  &
  11. # 使用jobs查看运行情况
  12. jobs
  13. 需要去配置,记得给电脑、服务器、手机都配置一下,协议监听地址对应中继节点地址,全局发现服务器和全局发现的地址。
  14. # 协议监听地址,中继服务URI  
  15. relay://公网IP:22067?id=中继服务器device ID  
  16.  
  17. # 全局发现服务器  
  18. https://公网IP:8443/?id=发现服务器device ID
复制代码


编辑
配置阐明

举个例子:文件夹路径是本地计算机的路径,比如我们如今必要电脑同步到服务器,那么过程就是

  • 打开电脑上的 syncthing http://127.0.0.1:8384/,添加文件夹,路径选择本身电脑本地的要上传的文件路径,如:D:\My\Notes,在共享里选择服务器上的 syncthing
  • 打开服务器上的 syncthing ,你会看到发过来的共享哀求,那么在继承后的配置内里,选择你必要保存在服务器上的地址,比如挂载后的OSS地址大概服务器的其他地方
如今如果你必要再同步给手机,那么就选择服务器上电脑发过来的共享文件夹,同样的点击共享就可以分享得手机
地址



  • ossfs
  • relaysrv
  • discosrv
  • syncthing
  • syncthing-android
  • alist
  • rclone
  • winfsp

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

徐锦洪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表