增加 Syncthing P2P 文件同步工具.

Signed-off-by: rick.chan <chenyang@autoai.com>
This commit is contained in:
rick.chan 2020-12-10 11:56:53 +08:00
parent 694a38a8d0
commit 6cd9c2f449
16 changed files with 118 additions and 0 deletions

View File

@ -0,0 +1,118 @@
# 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进入官网下载对应系统的安装包它的安装方式同正常的软件一样。
![官网首页下载部分](./img/Syncthing_P2P_文件同步工具/001.jpg)
Windows 系统推荐安装 SyncTrayzor拥有图形用户界面如下图并可以最小化到托盘后台运行并可以设置开机启动默认即是随开机自动启动
![SyncTrayzor 界面](./img/Syncthing_P2P_文件同步工具/002.jpg)
macOS 版本默认也是开机自启动并后台运行,但只能通过浏览器访问界面(点击图标,再点击 open如下图所示
![macOS 版](./img/Syncthing_P2P_文件同步工具/003.jpg)
更多版本的安装请参见官网。
每台设备均会被分配一个唯一的设备 ID一长串字符用以标识这台设备后面同步我们会用到。点击 操作 --> 显示 ID 即可查看。
![显示 ID](./img/Syncthing_P2P_文件同步工具/004.jpg)
![显示的 ID 和二维码](./img/Syncthing_P2P_文件同步工具/005.jpg)
### 2.2.设置文件同步
两台设备想要同步文件,基本步骤是:
①互相添加对方为远程设备 --> ②共享文件夹
下面以两台 Windows10 设备(分别命名为 A、B 以区分)为例演示如何进行文件同步。
首先复制设备 A 的 ID并在设备 B 上添加这个 ID添加远程设备 --> 粘贴 ID 于“设备 ID”处并保存并设置共享的文件夹如果要同步其他文件夹需要事先添加如下图所示。
![设备B点击“添加远程设备”](./img/Syncthing_P2P_文件同步工具/006.jpg)
![设备B在“设备ID”处粘贴另一台设备的 ID](./img/Syncthing_P2P_文件同步工具/007.jpg)
![设备B切换到“共享”选择文件夹](./img/Syncthing_P2P_文件同步工具/008.jpg)
稍等一段时间后(如果两台设备不是一个局域网可能会连接很缓慢,可以互相添加对方为远程设备并耐心等待连接成功),在设备 A 上便会出现一个新设备请求连接,选择添加设备并保存。
![设备A新设备请求](./img/Syncthing_P2P_文件同步工具/009.jpg)
再等一会后在设备 A 上会出现共享文件夹请求,选择共享并保存。
![设备A共享文件夹请求](./img/Syncthing_P2P_文件同步工具/010.jpg)
开始同步并成功后的界面如下。
![成功后的界面](./img/Syncthing_P2P_文件同步工具/011.jpg)
默认两个设备的共享文件夹会保持完全一致。
## 3.进阶使用
本节内容根据个人需要和知识储备选读,每一小节均是独立的。
### 3.1.版本控制
Syncthing 也提供了版本控制功能,它可以记录一个文件的删除和修改历史,你可以根据自己的需要将文件恢复到之前的某一状态。
然而需要特别指出的是它只记录远程设备对这个文件的修改和删除并不记录本机对于文件的修改和删除。例如设备A和设备B的共享文件夹存在一个文件 c.txt你在设备A上修改了 c.txt那么设备 A 是不会记录这个修改历史的,你只能在设备 B 上将 c.txt 恢复到修改之前的版本。此外在设备 A 开启共享文件夹的版本控制并不会影响到设备 B即每个设备需要各自开启版本控制。以下是如何开启版本控制
首先选择某个共享文件夹的选项。
![点击“选项”](./img/Syncthing_P2P_文件同步工具/012.jpg)
然后选择版本控制Syncthing 默认不开启版本控制,这里我选择简易版本控制示例,默认保留版本数量是 5你可以根据自己需要进行修改设置完成后点击保存即可。
![切换至“版本控制”并进行设置](./img/Syncthing_P2P_文件同步工具/013.jpg)
点击该文件夹的历史版本,即可将文件恢复至你需要的版本。
![点击“历史版本”即可进行版本控制](./img/Syncthing_P2P_文件同步工具/014.jpg)
### 3.2.文件同步冲突
共享文件夹中的文件可以被多个设备所修改所以存在同步发生冲突的可能。例如设备A和设备B共享一个文件 c.txt设备 A 上对文件 c.txt 作出了修改并保存,但在这个修改同步至设备 B 之前,设备 B 上也对这个文件作出了修改此时便会面临保留哪一个文件的问题。Syncthing 对于文件冲突的解决方法是:两个修改后的文件都会被保留,但修改时间更晚的文件会按<文件名>.sync-conflict-<日期>-<时间>-<修改设备的 ID>.<文件扩展名>的格式进行重命名。具体需要保留哪个文件由用户自行选择。
![SyncTrayzor上检测到冲突后会提醒用户](./img/Syncthing_P2P_文件同步工具/015.jpg)
### 3.3.发现服务器的使用
所需知识储备:了解服务器
Syncthing 发现服务器也是开源跨平台的。
之前提到 Syncthing 能够实现处于不同局域网之中的两台设备之间的同步这实际上有赖于发现服务器Syncthing Discovery Server的协助否则它们不能发现彼此。Syncthing 默认使用官方提供的全球发现服务器集群,不过你也可以自己搭建一个,在自己的服务器上。你可以设置 Syncthing 使用某一台发现服务器。
出于篇幅考虑,搭建个人发现服务器和使用见我另一篇文章:[Syncthing 中继服务器和发现服务器](https://zhuanlan.zhihu.com/p/89776195)。
### 3.4.中继服务器的使用
所需知识储备:了解服务器
Syncthing 中继服务器也是开源跨平台的。
当两台设备无法直接相联的时候Syncthing 可以通过中继服务器进行数据的传输。目前有一批默认的公共中继服务器可供使用,如果你想自己搭建,也是可以的。当然中继传输的速度是不如直连,不过在无法直连的情况,也只能使用中继传输。关于中继服务器的安全隐私问题,你不用担心数据泄露,因为数据是端到端加密的,中继服务器只传递加密后的数据,但是中继服务器是知道连接的用户 ip 和设备 Id。
出于篇幅考虑,搭建个人中继服务器和使用见我另一篇文章:[Syncthing 中继服务器和发现服务器](https://zhuanlan.zhihu.com/p/89776195)。
### 3.5.忽略文件
有时我们并不需要同步所有文件,那么我们可以在同步文件夹新建一个.stignore 文件,写入忽略文件的规则。

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB