网络的发展及多样化信息处理终端的普及,在不同场景下,使用不同终端处理信息变得更加便捷。与此同时,信息处理的连续性成为新的关注点,即在不同场景下,使用不同终端,对同一信息处理能够不受终端切换的制约,在多样化终端群中具备信息的无缝共享查看、持续编辑完善的能力。支撑这种能力的一个关键要素就是满足多平台、多终端的数据同步需求。
当前,数据同步架构大体分为两类,一类是中心节点的数据同步方式,另一类是无中心节点的数据同步方式。Syncting 就是第二类的典型代表。
Syncthing 是一款开源的实时文件同步工具,旨在帮助用户在两台或多台计算机之间无缝地同步数据。它采用 Go 语言编写,并利用 P2P 技术实现高效的文件传输。
0x01. Syncthing 的典型特点
- 去中心化
Syncthing 基于 P2P 技术实现设备间的文件同步,架构设计中不存在中央服务器,所有数据传输直接在设备之间进行,Syncthing 的同步是去中心化 的,从而消除了对第三方服务器的依赖,避免了中心服务器可能带来的各种限制和隐私问题。
-
软件兼容性
支持多种操作系统,包括 Windows、macOS、Linux、BSD、Solaris、Android 等,能够满足不同用户的需求。
-
内网穿透
Syncthing 自带内网穿透功能,能够在没有公网 IP 的情况下,通过 P2P 方式实现文件的异地同步。通过使用自动发现和中继功能,Syncthing 能够帮助用户建立一个安全的通信通道,使外部网络能够访问到局域网中的设备。
0x02. Syncthing 总体架构
Syncthing 将同步架构分为设备和文件夹两个级别。设备代表每个同步的物理节点,设备之间没有主次之分,Syncthing 为每台设备分配唯一的 Device ID,通过 Device ID 建立设备之间的连接通道。
数据同步真正关键的要素是文件夹,设备之间真正要保持内容一致也是指定好的同步文件夹。同步文件夹在不同的设备中,可以有不同的文件夹名字和属性(Folder path不同、Folder Label不同),但是它们在 Syncthing 的架构中都有共同的 ID — FOLDER ID
,Syncthing 通过在连通的设备上,搜索共同的 FOLDER ID
,完成拥有共同 FOLDER ID
文件夹之间的文件同步。
0x03. Syncthing 设置
0x31. 安装
针对不同的平台,可参照 Syncthing 官网指南完成安装。安装完成后,可通过
syncthing -paths
查看 Syncthing 各个参数文件的存储位置,方便未来手动修改。包括,
- Configuration file
- Device private key & certificate files
- GUI / API HTTPS private key & certificate files
- Database location
- Log file
- GUI override directory
- CSRF tokens file
- Default sync folder directory
0x32. 监听端口设置
Syncthing 安装完成之后,会自动开启 8384 端口、22000 端口的监听。8384 端口用于通过 Web 端 GUI 来管理 Syncthing 后台,22000 用于文件同步数据传输。
远程管理 Syncthing 设置
8384 端口默认安装为本地回环(127.0.0.1)监听,无法远程访问,可以通过修改配置文件(config.xml
)中设置,将,
<address>127.0.0.1:8384</address>
改为
<address>0.0.0.0:8384</address>
实现 Syncthing 的远程管理。
端口通路设置
Syncthing 会使用 22000 端口进行同步数据传输。安装完 Syncthing 后,主机防火墙或相关安全设置要放开 22000 端口,才能保障软件顺利运行。同理,如设置远程管理 Syncthing,也要放开 8384 端口。
0x33. 文件同步设置
Syncting 是基于 P2P 设计,进行文件同步设置,也需要在两台设备上都进行对应的设置。在 P2P 的一端完成设置后,Syncthing 会自动通知另一端进行对应的设置。
以本地设备 A 与远程设备 B 同步为例,
0x331. 设置设备连接
1) 本地设备 A 端
打开 A 的 Web 管理界面,点击 Add Remote Device
,
在 Device ID
中填写远程设备 B 的 ID,在 Device Name
中填写为远程设备 B 起的别名。
可以在远程设备 B 的 Web 界面的“Action”->“Show ID”菜单中找到远程设备 B 的ID。
2) 远程设备 B 端
A 设置完成后,Syncthing 会自动通知远程设备 B 来自 A 的连接请求,
点击“Add Device”,建立设备连接。
0x332. 设置文件夹同步
设置好设备之间的连接,还需设置同步文件夹,才能进行文件同步。
1) 本地设备 A 端
通过“Remote Devices –> Edit”打开设备设置对话框,
在“Sharing”页面中,勾选本地设备 A 要与远程设备共享的文件夹。
2) 远程设备 B 端
A 设置完成后,远程设备 B 会自动收到来自 A 的文件夹共享请求的通知,
点击“Share”,完成文件夹共享的同步请求。
文件同步设置过程中,“设置设备连接”、“设置文件夹同步”两个步骤,既可以分开执行,也可以合成一次操作执行。
reference
- https://baijiahao.baidu.com/s?id=1727973723545058986&wfr=spider&for=pc
synthing 自建中继服务器
- https://segmentfault.com/a/1190000017273107
- https://zhuanlan.zhihu.com/p/494566440
- https://blog.csdn.net/qq_35150992/article/details/128792276