Syncthing vs Resilio Sync vs Nextcloud 文件同步服务对比

基因编程
• 阅读 27035

首先,这是我一直同时在用的 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 版本。
  • NextcloudNas 版本很可能是有的,但是 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 个办法先缓缓。

  1. 通过复制/同步到目标机器的方式,把所有文件传输过去。(这种方式不治本,因为虚拟机变化产生的文件很大,如果不经常变动,你可以采用此方法。)
  2. 修改 文件拉取顺序小文件优先。在文件夹 选项->高级->文件拉取顺序 中修改。

-------------------- (想治本的同学看这里)我是善良友好的分割线 --------------------

当然以上方法都是不解决根本问题的。真正解决问题的办法是,自建中继服务器(划重点)。

  • 如何构建 Syncthing Relay Server。(官方英文文档)
  • 如何设置 Relaying。(官方英文文档)
  • 我在测试过的的docker镜像 t4skforce/syncthing-relay。(构建源码可参考)

碍于篇幅,这里不能教大家如何去部署。先提供一些资料给大家参考。 : )

2.1.2 Resilio Sync 为什么无法找到设备?

先说结论,原因是 Resilio Synctrackers and relays 服务器无法访问。

解决办法也很简单,让无法访问的地址走代理就可以了。

参考图:

Syncthing vs Resilio Sync vs Nextcloud 文件同步服务对比

碍于篇幅,细节就略略略了。 : )

  • Nextcloud 为什么无法访问应用页面下载应用?

    先说结论,原因是因为应用商店无法访问。

    1. 你可以自行去 GitHub 下载 App 项目。并解压到 __NEXTCLOUD-PATH__/apps 目录下,按照项目教程进行部署。
    2. 解决部署服务器无法访问 Nextcloud App Servier 无法访问的问题。

碍于篇幅,略略略。 : )

2.2 版本控制

既然和数据有关,那最害怕的是什么?

那当然就是数据 同步异常、数据丢失、数据误删、意外导致数据丢失 等数据消失不见的严重问题了。

-------------------- (结论看这里)我是善良友好的分割线 --------------------

这里不讲如何保障数据,直接说结论:以上软件所提供的版本控制,都无法完全保证数据同步过程中不丢失。

所以不要认为有了版本控制,数据就可以随意处理了。有时候你想找回某个数据还真不一定找得到。(自行搭配快照、副本、备份。)

-------------------- (评测看这里)我是善良友好的分割线 --------------------

  • Syncthing 提供的 版本控制 非常多,可以适应多种场景下使用。其中 阶段版本控制 提供了 小时 级别的历史记录,最大程度的保障数据安全,并且提供了历史记录查看器,可以很方便的查看历史记录,并恢复。基本上,它可以适应所有个人同步需求,并且同步过程中对数据也相对安全。

    参考图:

    Syncthing vs Resilio Sync vs Nextcloud 文件同步服务对比

    Syncthing vs Resilio Sync vs Nextcloud 文件同步服务对比

  • Resilio Sync 并不提供版本控制功能,只有最简单的回收站机制。甚至你也不清楚有没有放入回收站。所以它只适合 分享型、大文件型、变动少、文件相对而言不那么重要、目录层次少结构不复杂 等使用环境。我基本上,都是用来放大文件和多媒体文件。
  • Nextcloud 提供文件变化版本控制,但仅限于使用其客户端的方式。通过 WebDav 等访问的方式,是 没有版本控制 的,由于其使用数据库来记录所有文件,所以文件数量和结构,考验着你的数据库服务器。并且其 http 传输原理导致默认对 文件大小 有所限制。
    当然以上问题,都能通过其他方法来解决,但是我仍然 不推荐用来作为主要的同步服务

    但是其丰富的拓展性,以及详尽的文件记录,非常适合 分享多人协作,适合对外提供服务,可以弥补 Syncthing 这类个人同步服务的短板,也就是协作和分享。

3. 结语

这 3 款开源同步服务,在同步速度上,都是可以满速运行的,同步速度上体验没多大区别。但是由于各自服务的机制不同,需要一定动手能力,才能达到最佳效果。

以上只是对这 3 款开源服务的一些细节做了一些对比。如果大家有比较关心的其他细节,再做补充。

Bye. : )

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
基因编程
基因编程
Lv1
西北望乡何处是,东南见月几回圆。
文章
4
粉丝
0
获赞
0