Resilio Sync 和 Syncthing
1. 关于同步
本篇文章介绍了两个常用的同步工具:Resilio Sync 和 Syncthing。
同步,顾名思义,就是将两个或多个设备之间的文件、文件夹、数据等内容保持一致。
实现同步的方式有很多种: - 中心化的方法,也就是利用诸如网盘、云存储等服务,将文件上传到云端,然后再从云端下载到其他设备。这种方式的优点是简单易用,但缺点也很明显,比如隐私问题、速度问题、空间问题等。 - 去中心化的方法,也就是直接将文件点对点从一个设备同步到另一个设备,这种方式的优点是速度快、隐私好、空间不受限,但缺点是需要设备在线、需要设备之间的网络互通等。于是又引出了两种去中心化程度不同的同步方式: - 客户端之间依赖于公网 IP 的点对点同步,也就是客户端需要有公网 IP,然后直接通过公网 IP 进行同步。例如 rsync 就是这种方式。问题也显而易见,公网 IP 很难获取,如果一堆客户端只有一个有公网 IP,那么就退化为了中心化同步。 - 客户端之间不依赖于公网 IP 的点对点同步,也就是客户端不需要公网 IP,而是通过发现服务器(DHT)找到对方(当然发现服务器作为一个中心化设备还是需要公网 IP 的,不过一般服务商会提供公共共享的发现服务器),然后通过加密的方式建立连接,然后通过协商的方式选择以直连还是中继的方式同步文件。例如 Resilio Sync 和 Syncthing 就是这种方式。 - 协商的结果有两种,如果两侧 NAT 情况良好,可以进行打洞直连,则直接点对点同步(这种情况速度会非常快,仅受限于发送方上行宽带和接收方下行宽带);如果 NAT 情况较差,则通过中继服务器进行中转同步(这种情况速度会受限于中继服务器的带宽和延迟,通常会非常慢)。
2. Resilio Sync 和 Syncthing
Resilio Sync 和 Syncthing 就是两种典型的客户端间不依赖于公网 IP 的点对点同步工具。区别在于,Syncthing 是开源软件,提供了完整的点对点同步功能和版本管理功能。Resilio Sync 是商业闭源软件,提供了包括选择性同步和权限控制等更多高级功能,但需要付费(在最近的更新中已对个人用户免费,推测可能是正是来自 Syncthing 的压力带来的结果)。
而 Syncthing 由于是开源软件,所以可以自己搭建发现服务器和中继服务器,这样就可以避免发现服务器被 ban 以及中继服务器的带宽和延迟问题。但 Resilio Sync 由于是商业软件,所以只能使用官方的发现服务器和中继服务器(曾经被 GFW ban 过一段时间,现在管制又没有那么严了)。
所以,如果你对隐私和自由度要求较高,可以选择 Syncthing;如果你对功能要求较高,可以选择 Resilio Sync,然后将 Syncthing 作为备用冗余方案。