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