目 录CONTENT

文章目录

多端同步工具 Syncthing 完全自托管及使用介绍

acmookey
2024-02-01 / 0 评论 / 0 点赞 / 845 阅读 / 7852 字
温馨提示:
本文最后更新于 2024-04-02,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

本文简单分享一下: 如何搭建所谓的 完全自托管的Syncthing服务(Complete Selfhosted Syncthing Service) 以及 如何配置文件夹同步。

完全自托管的Syncthing服务:部署发现服务器(Discovery Server )以及 私有的中继服务(Relay Server),在客户端GUI的连接配置中指向私有的服务地址。

软件介绍

最近在玩树莓派的Self-Host应用,在 awesome-selfhosted 上看到文件同步的工具中最多star的就是 Syncthing了。

awesome-selfhosted-syncthing

截取一段 官网介绍 来说明 Syncthing 的主要应用场景:

what-is-syncthing

使用场景

1、远程同步(广域网)

办公用的MacBook家里的Windows电脑 之间同步 Chrome浏览器中 简悦插件 的标注数据。

简悦的自动同步需要安装客户端并且依赖外部网盘,配置使用起来比较麻烦,不太适合我。

因此选用Syncthing作为同步工具,这样除了简悦的配置文件之外,还可以在两台机器之间同步其它的数据。

简悦自动同步

2、备份文件自动同步(局域网)

在多台Linux服务器中同步文件夹,例如:将 树莓派(Linux Server)数据库备份文件自动同步到OpenWrt软路由中挂载的备份硬盘中。

3、Android手机重要资料自动备份(广域网 或 局域网)

在 Android手机中 使用 Syncthing APP(仅允许WiFi联网义节省流量) 将手机中的 图片、重要资料等 自动备份到Linux Server。

完全自托管的Syncthing同步方案

因为 MacbookWindows PC 并不一定会同时开机联网,所以增加了一个 Linux客户端作为文件同步的中转,同时在Linux Server上部署了 发现服务: stdiscosrv中继服务: strelaysrv,具体方案如下图:

syncthing同步方案

Syncthing 服务部署

选择使用docker部署 stdiscosrv、strelaysrv、syncthing 是为了方便管理,当然也可以通过二进制包的方式安装 以及配置 systemd的服务自启动。

部署的基本步骤:

  • 1、在Linux Server上,使用 Docker Compose 部署 stdiscosrvstrelaysrvsyncthing
  • 2、在需要同步服务的机器上,下载二进制安装包,解压到目标目录,配置开机启动
  • 3、GUI配置 监听地址发现服务器

详细的部署过程及 docker-compose.yml 放在wiki里,查看地址: https://ln-s.ink/self-host/syncthing

配置文件同步

在完成Syncthing的部署和客户端连接配置后,就可以开始进行文件同步了

参考 官方文档 进行同步文件夹配置。 创建同步文件夹步骤

配置目标

在广域网中,将 MacOSWindows PC 上的 simp_read文件夹进行双向同步

配置说明

  • GUI基本功能示例 GUI基本功能示例

  • 基本配置

设备GUI地址文件夹标签文件夹ID文件夹路径
Linux Serverhttp://1.2.3.4:9003
1.2.3.4为公网IP
simp_readg7y6m-objes
(自动生成)
~/simp_read
宿主机上的 /opt/data/syncthing/simp_read
MacOShttp://127.0.0.1:8384simp_readg7y6m-objes
(新建时指定)
~/Documents/syncthing/simp_read
Windows PChttp://127.0.0.1:8384simp_readg7y6m-objes
(新建时指定)
D:\syncthing\simp_read

配置步骤

1、在Linux Server上添加远程设备 MacOSWindows PC

  • 添加远程设备
    • 复制远程设备的设备ID
    • 添加远程设备,如图: 添加远程设备
  • 在远程设备上确认添加设备
    • 打开GUI,收到添加“新设备”的提示:添加设备-提示
    • 点击添加设备,直接保存
  • 观察到远程设备已连接,则可以继续配置 同步文件夹 远程设备状态

2、创建同步文件夹

Linux Server

Linux-创建同步文件夹

  • 常规
    • 文件夹标签:simp_read
    • 文件夹ID: 自动生成 g7y6m-objes
    • 文件夹路径:~/simp_read
  • 版本控制
    • 简易版本控制
    • 其它参数默认即可
  • 高级
    • 勾选监视更改
    • 文件夹类型要选择: 发送与接收
MacOS
  • 创建本地文件夹 ~/Documents/syncthing/simp_read
  • 创建 同步文件夹
    • MacOS-创建同步文件夹
    • 常规
      • 文件夹标签:simp_read
      • 文件夹ID: 指定为 g7y6m-objes
      • 文件夹路径:~/Documents/syncthing/simp_read
    • 版本控制
      • 简易版本控制
      • 其它参数默认即可
    • 高级
      • 勾选监视更改
      • 文件夹类型要选择: 发送与接收
Windows PC
  • 创建本地文件夹 D:\syncthing\simp_read
  • 创建 同步文件夹
    • 常规
      • 文件夹标签:simp_read
      • 文件夹ID: 指定为 g7y6m-objes
      • 文件夹路径:D:\syncthing\simp_read
    • 版本控制
      • 简易版本控制
      • 其它参数默认即可
    • 高级
      • 勾选监视更改
      • 文件夹类型要选择: 发送与接收

3、共享 同步文件夹(以 MacOS为例)

  • Linux Server上点击 simp_read 文件夹的选项 - 共享,将文件夹分享给 rMBP-14设备,如图:image.png
  • MacOS上打开GUI
    • 收到共享文件夹的提示:共享文件夹-提示
    • 点击共享,完成文件夹共享配置
    • 收到错误提示:加密错误日志
    • 修改 MacOS上的simp_read文件夹的共享密码,和 Linux Server中的密码保持一致 image.png
    • 重启 Syncthing: 重启Syncthing
  • Linux Server上打开GUI,重启Syncthing

验证功能

  • 在MacOS上创建文件 ~/Documents/syncthing/simp_read/1.txt
$ tee -a ~/Documents/syncthing/simp_read/1.txt <<-'EOF'
a
b
EOF
  • 进入Linux Server 的 Syncthing容器中
# docker exec -it syncthing sh
  • 在Linux Server 的 Syncthing容器中查看 1.txt
/ $ cd /var/syncthing/simp_read
~/simp_read $ pwd
/var/syncthing/simp_read
~/simp_read $ cat 1.txt
a
b
  • 在Linux Server 的 Syncthing容器中修改 1.txt, 增加一行文本
~/simp_read $ tee -a 1.txt <<-'EOF'
> hello world
> EOF
hello world

~/simp_read $ cat 1.txt
a
b
hello world
  • 在MacOS上查看文件更新
$ cat ~/Documents/syncthing/simp_read/1.txt
a
b
hello world
0

评论区