请教各位,没有分布式文件系统的前提下,如何实现多台 Linux 机器上的文件夹级别同步呢

2019-01-31 10:24:53 +08:00
 codingadog

目前基本情况是共有>2 台的机器跑分布式服务,每日往磁盘上固化数据,需要在机器之间同步文件夹。对于文件夹下的同名文件,将更新时间最新的版本同步到其它机器上。

请教各位有什么现成的方案能实现这个功能吗?

非常感谢。

2516 次点击
所在节点    问与答
26 条回复
Rosanta
2019-01-31 10:38:04 +08:00
rsync 啊
codingadog
2019-01-31 10:39:24 +08:00
@Rosanta rsync 能实现同名文件根据文件时间同步最新的版本吗?
hexinxucxy
2019-01-31 10:39:47 +08:00
nas
triptipstop
2019-01-31 10:39:48 +08:00
EFS
codingadog
2019-01-31 10:52:40 +08:00
codingadog
2019-01-31 10:53:21 +08:00
感谢,没有额外的机器了,同时同步的文件后续需要使用,因此应该不能通过这两种方式。
msg7086
2019-01-31 11:11:22 +08:00
听上去就是个很普通的 Syncthing 的应用场景。
msg7086
2019-01-31 11:12:18 +08:00
不过说实话,GlusterFS 这个分布式文件系统也可以看一下,说不定适合你们的使用场景。
codingadog
2019-01-31 11:20:39 +08:00
@msg7086 🤣年后上线来不及改了,主要是可能出现同名文件,同步最新的不知道怎么做
xkeyideal
2019-01-31 11:22:38 +08:00
1、每日同步几次
2、每次同步数据的大小
3、对同步延迟的要求
4、是否容忍一台或多台宕机

把这四点好好介绍一下,别人能更好的给你方案
msg7086
2019-01-31 11:28:03 +08:00
Syncthing 是按照修改时间决定谁最新的。第一次同步会把冲突都标记出来手动解决,以后就总是按照时间同步了。
codingadog
2019-01-31 11:55:31 +08:00
@xkeyideal 好的我整理 append 一下,感谢!
codingadog
2019-01-31 11:56:20 +08:00
@msg7086 😁好像能满足,我了解一下,谢谢
xkeyideal
2019-01-31 13:36:41 +08:00
暂不考虑用户手动更新,推测一下,楼主的同步数据应该可以理解为更新数据,数据应该是逐条更新的,此种情况数据量并不大,可以考虑两种方案:
1、采用 raft 协议,毕竟数据同步完之后还需要使用,此方案使用数据也一并解决了
2、可以采用类似 mysql binlog 的方式

上述两种方案核心都是主从同步,一主多从。

考虑用户手动触发,就需要考虑所说的数据是否存在冗余。如果大量的数据都是更新操作,那么上述方案完全没有问题。
codingadog
2019-01-31 14:45:51 +08:00
@xkeyideal 好的我看下这两种方案,如果主从方式的话,可能无法满足从机文件更新了,需要反向同步到主机上的问题,我去了解下这种反向同步能否满足
xkeyideal
2019-01-31 14:50:05 +08:00
@codingadog 建议先看看一些分布式的资料,据我的了解不存在你说的问题,主写成功,会自动同步给从
coolloves
2019-01-31 14:54:09 +08:00
我咋感觉最简单的就是某机器做主,开 nfs,然后挂载到从机上.
然后可以做个 rsync,夜间同步到某从机上.为了冗余,不考虑可不做.
codingadog
2019-01-31 15:09:38 +08:00
@xkeyideal 不,现在的问题是所有的机器上的文件都可能发生更新,没有固定的主从关系
codingadog
2019-01-31 15:10:12 +08:00
@coolloves 没有固定的主从,任何一台机器上的文件都可能发生更新😂
xkeyideal
2019-01-31 15:21:59 +08:00
@codingadog 这个就需要你和你的团队从架构和需求上酌情处理了,别人也不了解你的业务场景,只能给出一些建议,上面也有很多人提供了同步的方案,都可以考虑,适合业务的才是最好的。
不可能别人给个方案,你目前的架构完全不需要变更就能直接使用的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/532066

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX