首先,这是我一直同时在用的 3 个开源同步服务。
那为什么我要同时用着多个同步服务呢?主要是因为它们各有优势,有一些无可替代的功能。
-
Resilio Sync
高级版提供的 可选择性同步,让我用0KB
的占用空间,可以得到所有文件的目录和名称。在我需要的时候,又能以极快的速度下载到本地。这是个我使用极少的功能,但是却是使用中最为爽快的一个功能。分享和下载的时候,我都毫无负担,因为它们都不存在于本地,我只用下载自己想要的文件。 -
Nextcloud
提供的文件 分享 可以让你有更多的选择以及权限控制,只用一条 url 链接,你就可以简单的分享给需要的人,而且还能提供文件操作动态,你可以知道文件在什么时候做了哪些变动,这对你希望监控文件动态的时候非常好用。并且它还提供许多不同类型的 App 拓展,其中包括Rss程序
、Keepass管理程序
、音乐播放
、视频播放
等诸多功能。 -
Syncthing
这是我 个人文件同步 的主力服务,我用它进行跨设备同步和备份。它是我的Inbox
文件夹,收集着每台设备上的数据,我用它来进行数据
、库
、配置
等文件的同步。它的优点也非常简单,安装简单,网络要求低,提供完善的版本控制。我只需要后台开启,配置好,就无需再担心。
当然,我并不单单只依赖上面 3 个同步服务(当然rsync、webdav、ftp我也用,但这不在讨论范围内。),我还搭配电脑的备份服务进行备份。家庭文件服务器还会有快照计划,重要文件也会定时冷备份。这样,我才能任性的对待数据,并再也不用担心它们会消失不见了。
: )
下面,我们进入正题,对比一下 3 款同步服务的优缺点吧。
1. 平台覆盖
平台 | Syncthing | Resilio Sync | Nextcloud |
---|---|---|---|
iOS | ✘ |
✔︎ | ✔︎ |
Android | ✔︎ | ✔︎ | ✔︎ |
macOS | ✔︎ | ✔︎ | ✔︎ |
Windows | ✔︎ | ✔︎ | ✔︎ |
Linux | ✔︎ | ✔︎ | ✔︎ |
Linux Arm | ✔︎ | ✔︎ | ✔︎ |
Docker x86 | ✔︎ | ✔︎ | ✔︎ |
Docker Arm | ✘ |
✘ |
✔︎ |
Nas System | ✔︎ | ✔︎ | ✘ |
PS: 主要统计的是官方支持的平台。第三方方案,不计入统计。
- 这里比较遗憾的是
Syncthing
并没有iOS
客户端,曾经有一款但是现在已经下架了,我手机端主要用Nextcloud
偶尔用Resilio Sync
(毕竟只同步大文件用)。 -
docker arm
不支持的服务需要自行构建(第三方也可),通常支持linux arm
的都支持docker arm
,但是官方只构建了x86
版本。 -
Nextcloud
的Nas
版本很可能是有的,但是Nextcloud
官方没介绍,NAS 系统
官方库一般也有下载,毕竟这个服务很普遍了。
2. 功能对比
功能 | Syncthing | Resilio Sync | Nextcloud |
---|---|---|---|
版本控制 | 阶段性版本控制 | 回收站 | 限客户端 |
网络环境 | 1. 同步无限制 2. 中区中转服 务器稀少 |
1. 同步无限制 2. 设备发现需 国外环境 |
1. 同步无限制 2. 应用下载需 国外环境 3. 部分应用依 赖国外服务 |
同步速度 | 1. 内网满带宽 2. 外网依赖中 转服务器带宽 |
1. 内网满带宽 2. 外网依赖同 步设备带宽总和 |
1. 内网满带宽 2. 外网依赖部 署服务器带宽 |
WebDav | ✘ |
✘ |
✔︎ |
选择同步 | ✘ |
✔︎(高级版) | ✘ |
文件加密 | ✘ | ✔︎(加密文件夹) | ✔︎(需设置) |
同步加密 | ✔︎ | ✔︎ | ✔︎(需启用https) |
部署难度 | 低 | 低 | 高 |
文件分享 | ✔︎(只能整库分享) | ✔︎(只能整库分享) | ✔︎ |
权限管理 | ✔︎ | ✔︎ | ✔︎ |
2.1 网络问题
这里重点讨论一下主要影响大家使用的网络问题。
2.1.1 Syncthing
的同步速度为什么那么慢?
先说结论,原因是由于对 Syncthing
开放且距离你最近的 中继服务器
过少并且速度较慢导致的。
PS: https://relays.syncthing.net/ 这里可以看到开放的 中继服务器
列表。(个人使用的中继服务器可以不开放)
最开始用的时候,我并没有觉得这个问题影响使用,因为数据量不大(都是配置文件),也就没有在意。
自从 Resilio Sync
因为众所周知的问题挂了以后,我把大量同步任务也迁移到了 Syncthing
,其中就包括了 虚拟机
、多媒体文件
、下载的系统文件
、备份文件
等大文件数据。但这就要了命了,几十 kb 的速度同步至少按周来算,而且是不关机的那种。这时候,我就想了 2 个办法先缓缓。
- 通过复制/同步到目标机器的方式,把所有文件传输过去。(这种方式不治本,因为虚拟机变化产生的文件很大,如果不经常变动,你可以采用此方法。)
- 修改
文件拉取顺序
为小文件优先
。在文件夹选项
->高级
->文件拉取顺序
中修改。
-------------------- (想治本的同学看这里)我是善良友好的分割线 --------------------
当然以上方法都是不解决根本问题的。真正解决问题的办法是,自建中继服务器(划重点)。
- 如何构建 Syncthing Relay Server。(官方英文文档)
- 如何设置 Relaying。(官方英文文档)
- 我在测试过的的docker镜像
t4skforce/syncthing-relay
。(构建源码可参考)
碍于篇幅,这里不能教大家如何去部署。先提供一些资料给大家参考。 : )
2.1.2 Resilio Sync
为什么无法找到设备?
先说结论,原因是 Resilio Sync
的 trackers
and relays
服务器无法访问。
解决办法也很简单,让无法访问的地址走代理就可以了。
参考图:
碍于篇幅,细节就略略略了。 : )
-
Nextcloud
为什么无法访问应用页面下载应用?先说结论,原因是因为应用商店无法访问。
- 你可以自行去
GitHub
下载App
项目。并解压到__NEXTCLOUD-PATH__/apps
目录下,按照项目教程进行部署。 - 解决部署服务器无法访问
Nextcloud App Servier
无法访问的问题。
- 你可以自行去
碍于篇幅,略略略。 : )
2.2 版本控制
既然和数据有关,那最害怕的是什么?
那当然就是数据 同步异常、数据丢失、数据误删、意外导致数据丢失 等数据消失不见的严重问题了。
-------------------- (结论看这里)我是善良友好的分割线 --------------------
这里不讲如何保障数据,直接说结论:以上软件所提供的版本控制,都无法完全保证数据同步过程中不丢失。
所以不要认为有了版本控制,数据就可以随意处理了。有时候你想找回某个数据还真不一定找得到。(自行搭配快照、副本、备份。)
-------------------- (评测看这里)我是善良友好的分割线 --------------------
-
Syncthing
提供的版本控制
非常多,可以适应多种场景下使用。其中阶段版本控制
提供了 小时 级别的历史记录,最大程度的保障数据安全,并且提供了历史记录查看器,可以很方便的查看历史记录,并恢复。基本上,它可以适应所有个人同步需求,并且同步过程中对数据也相对安全。参考图:
-
Resilio Sync
并不提供版本控制功能,只有最简单的回收站机制。甚至你也不清楚有没有放入回收站。所以它只适合 分享型、大文件型、变动少、文件相对而言不那么重要、目录层次少结构不复杂 等使用环境。我基本上,都是用来放大文件和多媒体文件。 -
Nextcloud
提供文件变化版本控制,但仅限于使用其客户端的方式。通过 WebDav 等访问的方式,是 没有版本控制 的,由于其使用数据库来记录所有文件,所以文件数量和结构,考验着你的数据库服务器。并且其 http 传输原理导致默认对 文件大小 有所限制。
当然以上问题,都能通过其他方法来解决,但是我仍然 不推荐用来作为主要的同步服务。但是其丰富的拓展性,以及详尽的文件记录,非常适合 分享 和 多人协作,适合对外提供服务,可以弥补
Syncthing
这类个人同步服务的短板,也就是协作和分享。
3. 结语
这 3 款开源同步服务,在同步速度上,都是可以满速运行的,同步速度上体验没多大区别。但是由于各自服务的机制不同,需要一定动手能力,才能达到最佳效果。
以上只是对这 3 款开源服务的一些细节做了一些对比。如果大家有比较关心的其他细节,再做补充。
Bye. : )
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。