V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nmap
V2EX  ›  程序员

求一个文件 N 点同步的方案

  •  
  •   nmap · 219 天前 · 1425 次点击
    这是一个创建于 219 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个文件或者目录,放在 N 个地方,包括 linux 和 windows 机器,
    在一个地方修改后,要自动同步到其他 N-1 个点,这些点大部分是云服务器和内网机器,
    怎么实现自动化?
    最好是开源的可以自己部署的简单方案,
    或者退一步不考虑 win 也可以
    8 条回复    2024-05-13 17:51:43 +08:00
    kirara2024
        1
    kirara2024  
       219 天前
    syncthing
    bkmi
        2
    bkmi  
       219 天前 via Android
    在用 Syncthing
    xyz8899
        3
    xyz8899  
       219 天前
    群晖 drive
    Les1ie
        4
    Les1ie  
       219 天前
    Syncthing 。很符合要求,p2p 不需要公网 IP 。 目前用来在 2 台 Linux 和 1 台 Windows 之前同步同一个路径。还用 android 端同步照片到 OMV 系统的 NAS 上。
    wangbin11
        5
    wangbin11  
       219 天前
    有没有企业方案啊我也需要一个
    kuanat
        6
    kuanat  
       219 天前   ❤️ 2
    TLDR

    不知道你考虑过冲突解析的问题?同一时间两个节点上的同一文件产生了不同的变化,要以哪个副本为准?如果存在这种情况,那你要解决的实际上是分布式系统的同步问题,方案会非常复杂。比如一般的对象存储,都是传一个副本,然后节点之间完成副本同步。

    如果不存在这种情况,可以降级成非分布式问题,方案也简单很多。比如你只是需要多个备份,同一时间只会在一个节点上操作。这个情况比较简单的做法是选一个节点作为权威副本,其他的节点都以这个节点为准,向权威副本推送更新的时候要先合并权威副本。类似于使用 github 之类的平台进行协作的模式。rsync 加上简单脚本就能实现。


    ----手动分割----

    这个问题没有普适的答案,本质上它是受分布式系统 CAP 理论限制的。需要确认需求,进而在 CAP 三者当中选二,然后才能确认方案。由于绝大多数情况下,P 是不能放弃的,所以要么只能 AP 要么只能 CP 。

    AP 方案放弃 C ,结果就是某一个时刻,各个节点之间的副本有的是最新版,有的是旧版。

    CP 方案放弃 A ,在任意同步行为完成之前,不能进行其他操作。

    实际应用里最先考虑的是降级,把分布式降级为星型,就是上面说的权威副本节点。如果无法降级,那就需要使用基于 paxos/raft 这类共识算法的同步机制。
    Anybfans
        7
    Anybfans  
       219 天前
    看小雅用的是 resilio 。 之前 syncthing 。好像是因为太卡了。换的 resilio
    leoyun
        8
    leoyun  
       219 天前
    seafile?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3012 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:19 · PVG 22:19 · LAX 06:19 · JFK 09:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.