首发于云同步
Syncthing - P2P文件同步工具

Syncthing - P2P文件同步工具

0. 前言

所需知识储备:无。

1 简介

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


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


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


2 基本使用

2.1 安装

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

官网首页下载部分


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

SyncTrayzor界面

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

macOS版

更多版本的安装请参见官网。

每台设备均会被分配一个唯一的设备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 发现服务器的使用

所需知识储备:了解服务器

Syncthing发现服务器也是开源跨平台的。

之前提到Syncthing能够实现处于不同局域网之中的两台设备之间的同步,这实际上有赖于发现服务器(Syncthing Discovery Server)的协助,否则它们不能发现彼此。Syncthing默认使用官方提供的全球发现服务器集群,不过你也可以自己搭建一个,在自己的服务器上。你可以设置Syncthing使用某一台发现服务器。

出于篇幅考虑,搭建个人发现服务器和使用见我另一篇文章:

寒三石:Syncthing中继服务器和发现服务器zhuanlan.zhihu.com图标

3.4 中继服务器的使用

所需知识储备:了解服务器

Syncthing中继服务器也是开源跨平台的。

当两台设备无法直接相联的时候,Syncthing可以通过中继服务器进行数据的传输。目前有一批默认的公共中继服务器可供使用,如果你想自己搭建,也是可以的。当然中继传输的速度是不如直连,不过在无法直连的情况,也只能使用中继传输。关于中继服务器的安全隐私问题,你不用担心数据泄露,因为数据是端到端加密的,中继服务器只传递加密后的数据,但是中继服务器是知道连接的用户ip和设备Id。

出于篇幅考虑,搭建个人中继服务器和使用见我另一篇文章:

寒三石:Syncthing中继服务器和发现服务器zhuanlan.zhihu.com图标

3.5 忽略文件

有时我们并不需要同步所有文件,那么我们可以在同步文件夹新建一个.stignore文件,写入忽略文件的规则。


类似软件推荐

寒三石:微力同步 - P2P文件同步工具zhuanlan.zhihu.com图标

如果有帮助,麻烦大家帮我回答点个赞,谢谢

自己拥有一台服务器可以做哪些很酷的事情?www.zhihu.com图标

编辑于 05-01

文章被以下专栏收录