于道各努力,千里共同风 – 文件同步利器 Syncthing


网络的发展及多样化信息处理终端的普及,在不同场景下,使用不同终端处理信息变得更加便捷。与此同时,信息处理的连续性成为新的关注点,即在不同场景下,使用不同终端,对同一信息处理能够不受终端切换的制约,在多样化终端群中具备信息的无缝共享查看、持续编辑完善的能力。支撑这种能力的一个关键要素就是满足多平台、多终端的数据同步需求。

当前,数据同步架构大体分为两类,一类是中心节点的数据同步方式,另一类是无中心节点的数据同步方式。Syncting 就是第二类的典型代表。

Syncthing 是一款开源的实时文件同步工具,旨在帮助用户在两台或多台计算机之间无缝地同步数据。它采用 Go 语言编写,并利用 P2P 技术实现高效的文件传输。

0x01. Syncthing 的典型特点

  • 去中心化

    Syncthing 基于 P2P 技术实现设备间的文件同步,架构设计中不存在中央服务器,所有数据传输直接在设备之间进行,Syncthing 的同步是去中心化 的,从而消除了对第三方服务器的依赖,避免了中心服务器可能带来的各种限制和隐私问题。

  • 软件兼容性

    支持多种操作系统,包括 Windows、macOS、Linux、BSD、Solaris、Android 等,能够满足不同用户的需求。

  • 内网穿透

    Syncthing 自带内网穿透功能,能够在没有公网 IP 的情况下,通过 P2P 方式实现文件的异地同步。通过使用自动发现和中继功能,Syncthing 能够帮助用户建立一个安全的通信通道,使外部网络能够访问到局域网中的设备。

0x02. Syncthing 总体架构

pic-1

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

pic-2

Device ID 中填写远程设备 B 的 ID,在 Device Name 中填写为远程设备 B 起的别名。

可以在远程设备 B 的 Web 界面的“Action”->“Show ID”菜单中找到远程设备 B 的ID。

2) 远程设备 B 端

A 设置完成后,Syncthing 会自动通知远程设备 B 来自 A 的连接请求,

pic-3

点击“Add Device”,建立设备连接。

0x332. 设置文件夹同步

设置好设备之间的连接,还需设置同步文件夹,才能进行文件同步。

1) 本地设备 A 端

通过“Remote Devices –> Edit”打开设备设置对话框,

pic-3

在“Sharing”页面中,勾选本地设备 A 要与远程设备共享的文件夹。

2) 远程设备 B 端

A 设置完成后,远程设备 B 会自动收到来自 A 的文件夹共享请求的通知,

pic-3

点击“Share”,完成文件夹共享的同步请求。

文件同步设置过程中,“设置设备连接”、“设置文件夹同步”两个步骤,既可以分开执行,也可以合成一次操作执行。

reference

  1. https://baijiahao.baidu.com/s?id=1727973723545058986&wfr=spider&for=pc

synthing 自建中继服务器

  1. https://segmentfault.com/a/1190000017273107
  2. https://zhuanlan.zhihu.com/p/494566440
  3. https://blog.csdn.net/qq_35150992/article/details/128792276
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇