谷动谷力

标题: Syncthing - P2P文件同步工具 [打印本页]

作者: 谷谷小师妹    时间: 2023-12-20 23:29
标题: Syncthing - P2P文件同步工具



Syncthing - P2P文件同步工具

1 简介
随着数据的增长,我们对于文件的同步和备份需求也日趋强烈。各种网盘为我们在文件同步备份提供便利的同时,也在速度、安全和隐私等方面带来不小的限制和风险。

Syncthing是一款开源免费跨平台的文件同步工具,是基于P2P技术实现设备间的文件同步,所以它的同步是去中心化的,即你并不需要一个服务器,故不需要担心这个中心的服务器给你带来的种种限制,而且类似于torrent协议,参与同步的设备越多,同步的速度越快。针对隐私问题,Syncthing软件只会将数据存储于个人信任的设备上,不会存储到服务器上。设备之间的通信均通过TLS进行,Syncthing还使用了完全正向保密技术来进一步保障你的数据安全。对于处于不同局域网之中的设备之间的文件同步,Syncthing也提供了支持。

Syncthing支持非常多的平台,包括Windows、macOS、Android、Linux、FreeBSD、Solaris、群晖和威联通NAS等,但遗憾的是,在iOS上只有一个第三方客户端fsync。

2 基本使用2.1 安装
首先在需要同步的设备上安装Syncthing,进入官网下载对应系统的安装包,它的安装方式同正常的软件一样。

Windows系统推荐安装SyncTrayzor,拥有图形用户界面(如下图)并可以最小化到托盘后台运行,并可以设置开机启动(默认即是随开机自动启动)。

SyncTrayzor界面
macOS版本默认也是开机自启动并后台运行,但只能通过浏览器访问界面(点击图标,再点击open,如下图所示)。

macOS版
更多版本的安装请参见官网。另外Syncthing是可以被远程访问得。
每台设备均会被分配一个唯一的设备ID(一长串字符)用以标识这台设备,后面同步我们会用到。点击 操作 --> 显示ID 即可查看。

显示ID
显示的ID和二维码2.2 设置文件同步
两台设备想要同步文件,基本步骤是:
①互相添加对方为远程设备 --> ②共享文件夹
下面以两台Windows10设备(分别命名为A、B以区分)为例演示如何进行文件同步。

首先复制设备A的ID,并在设备B上添加这个ID(添加远程设备 --> 粘贴ID于“设备ID”处并保存),并设置共享的文件夹(如果要同步其他文件夹需要事先添加),如下图所示。

设备B:点击“添加远程设备”
设备B:在“设备ID”处粘贴另一台设备的ID
设备B:切换到“共享”,选择文件夹
稍等一段时间后(如果两台设备不是一个局域网可能会连接很缓慢,可以互相添加对方为远程设备并耐心等待连接成功),在设备A上便会出现一个新设备请求连接,选择添加设备并保存。

设备A:新设备请求
再等一会后在设备A上会出现共享文件夹请求,选择共享并保存。

设备A:共享文件夹请求
开始同步并成功后的界面如下。

成功后的界面
默认两个设备的共享文件夹会保持完全一致。

3 进阶使用
本节内容根据个人需要和知识储备选读,每一小节均是独立的。
3.1 版本控制
Syncthing也提供了版本控制功能,它可以记录一个文件的删除和修改历史,你可以根据自己的需要将文件恢复到之前的某一状态。
然而需要特别指出的是,它只记录远程设备对这个文件的修改和删除,并不记录本机对于文件的修改和删除。例如设备A和设备B的共享文件夹存在一个文件c.txt,你在设备A上修改了c.txt,那么设备A是不会记录这个修改历史的,你只能在设备B上将c.txt恢复到修改之前的版本。此外在设备A开启共享文件夹的版本控制并不会影响到设备B,即每个设备需要各自开启版本控制。以下是如何开启版本控制:

首先选择某个共享文件夹的选项。

点击“选项”
然后选择版本控制,Syncthing默认不开启版本控制,这里我选择简易版本控制示例,默认保留版本数量是5,你可以根据自己需要进行修改,设置完成后点击保存即可。

切换至“版本控制”并进行设置
点击该文件夹的历史版本,即可将文件恢复至你需要的版本。

点击“历史版本”即可进行版本控制
3.2 文件同步冲突
共享文件夹中的文件可以被多个设备所修改,所以存在同步发生冲突的可能。例如设备A和设备B共享一个文件c.txt,设备A上对文件c.txt作出了修改并保存,但在这个修改同步至设备B之前,设备B上也对这个文件作出了修改,此时便会面临保留哪一个文件的问题。Syncthing对于文件冲突的解决方法是:两个修改后的文件都会被保留,但修改时间更晚的文件会按<文件名>.sync-conflict-<日期>-<时间>-<修改设备的ID>.<文件扩展名>的格式进行重命名。具体需要保留哪个文件由用户自行选择。

SyncTrayzor上检测到冲突后会提醒用户
3.3 忽略文件
有时我们不希望接收远程设备同步全部文件过来,比如macOS设备向Windows设备同步时,会同步一个.DS_Store的文件(macOS保存文件夹的自定义属性的隐藏文件),而这个文件在Windows并没有用处,希望这个文件被忽略掉。
我们可以点击文件夹的选项,选择忽略模式,配置该文件的名称,那后续这个文件不会再被同步,不管远程设备对这个文件做了什么样的修改。

3.4 发现服务器的使用
所需知识储备:了解服务器
Syncthing发现服务器也是开源跨平台的。
之前提到Syncthing能够实现处于不同局域网之中的两台设备之间的同步,这实际上有赖于发现服务器(Syncthing Discovery Server)的协助,否则它们不能发现彼此。Syncthing默认使用官方提供的全球发现服务器集群,不过你也可以自己搭建一个,在自己的服务器上。你可以设置Syncthing使用某一台发现服务器。
出于篇幅考虑,搭建个人发现服务器和使用见我另一篇文章:
寒三石:Syncthing中继服务器和发现服务器18 赞同 · 15 评论文章
3.5 中继服务器的使用
所需知识储备:了解服务器
Syncthing中继服务器也是开源跨平台的。
当两台设备无法直接相联的时候,Syncthing可以通过中继服务器进行数据的传输。目前有一批默认的公共中继服务器可供使用,如果你想自己搭建,也是可以的。当然中继传输的速度是不如直连,不过在无法直连的情况,也只能使用中继传输。关于中继服务器的安全隐私问题,你不用担心数据泄露,因为数据是端到端加密的,中继服务器只传递加密后的数据,但是中继服务器是知道连接的用户ip和设备Id。
出于篇幅考虑,搭建个人中继服务器和使用见我另一篇文章:






欢迎光临 谷动谷力 (http://bbs.sunsili.com/) Powered by Discuz! X3.2