V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zxCoder
V2EX  ›  问与答

类似于坚果云的文件同步是怎么实现的?

  •  
  •   zxCoder · 2020-10-07 21:24:59 +08:00 · 1966 次点击
    这是一个创建于 1290 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果想自己实现这样一个工具,应该怎么做,假设不会有同时操作的问题,就每次文件有改动,就上传到服务端,然后另外一台机器自动从服务端下载最新版本并覆盖到本地,是这样吗?

    有没有增量更新文件的方法呢?能否提示几个关键词?

    第 1 条附言  ·  2020-10-07 22:54:48 +08:00

    看懂rsync算法了。。。真是巧妙

    14 条回复    2020-10-09 10:15:45 +08:00
    springmarker
        1
    springmarker  
       2020-10-07 21:27:39 +08:00
    rsync
    zxCoder
        2
    zxCoder  
    OP
       2020-10-07 21:29:11 +08:00
    @springmarker 搜了一下 这个只是 linux 系统的命令?
    zxCoder
        3
    zxCoder  
    OP
       2020-10-07 21:30:55 +08:00
    @springmarker 哦哦好像不止 linux
    ruixue
        4
    ruixue  
       2020-10-07 21:35:47 +08:00
    有现成的开源的 Seafile,可以去看看代码,主要就是分块存储
    MakeItGreat
        5
    MakeItGreat  
       2020-10-07 21:40:45 +08:00 via Android
    Resilio sync
    Cielsky
        6
    Cielsky  
       2020-10-07 21:48:18 +08:00 via Android
    syncthing
    zxCoder
        7
    zxCoder  
    OP
       2020-10-07 21:48:34 +08:00
    @ruixue 我看看 c 写的。。。好硬核
    ruixue
        8
    ruixue  
       2020-10-07 22:21:04 +08:00
    @zxCoder Nextcloud 也有同步功能,php 写的更易读,但是因为没有使用分块,所以无法做到增量差分同步和去重存储。。
    yeqizhang
        9
    yeqizhang  
       2020-10-07 23:05:37 +08:00 via Android
    看看 syncthing 吧,go 语言写的。
    maxxfire
        10
    maxxfire  
       2020-10-08 16:53:12 +08:00
    那如何解决多个不同终端同时修改文件,可能造成的产生多个文件的版本冲突呢 @zxCoder
    zxCoder
        11
    zxCoder  
    OP
       2020-10-09 08:53:44 +08:00
    @maxxfire 这好像有点复杂啊 目前我的需求只需要做 1 对 1 的同步就好了,不会有同时修改的情况
    maxxfire
        12
    maxxfire  
       2020-10-09 09:25:15 +08:00
    版本冲突检测,这个是比较基本的功能吧
    zxCoder
        13
    zxCoder  
    OP
       2020-10-09 10:06:22 +08:00
    @maxxfire 刚才想了下,确实会出现这样的问题,所以我想请教一个问题:比如在两台电脑文件同步,电脑 A 把最新文件同步到服务器上,然后电脑 B 开机,这时候,怎么判断应该把服务器上最新文件同步到电脑 B,还是要把电脑 B 上"最新的"文件(其实是原来的文件)同步到服务器上呢?
    zxCoder
        14
    zxCoder  
    OP
       2020-10-09 10:15:45 +08:00
    @maxxfire 好像我说的这个问题就是版本冲突了。。。理论上服务器端的文件应该是最新的,然后如果电脑 B 没有更新到最新版本之前就修改了,就会产生冲突
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   895 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:19 · PVG 05:19 · LAX 14:19 · JFK 17:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.