V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zxCoder
V2EX  ›  问与答

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

  •  
  •   zxCoder · Oct 7, 2020 · 2573 views
    This topic created in 2040 days ago, the information mentioned may be changed or developed.

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

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

    Supplement 1  ·  Oct 7, 2020

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

    14 replies    2020-10-09 10:15:45 +08:00
    springmarker
        1
    springmarker  
       Oct 7, 2020
    rsync
    zxCoder
        2
    zxCoder  
    OP
       Oct 7, 2020
    @springmarker 搜了一下 这个只是 linux 系统的命令?
    zxCoder
        3
    zxCoder  
    OP
       Oct 7, 2020
    @springmarker 哦哦好像不止 linux
    ruixue
        4
    ruixue  
       Oct 7, 2020
    有现成的开源的 Seafile,可以去看看代码,主要就是分块存储
    MakeItGreat
        5
    MakeItGreat  
       Oct 7, 2020 via Android
    Resilio sync
    Cielsky
        6
    Cielsky  
       Oct 7, 2020 via Android
    syncthing
    zxCoder
        7
    zxCoder  
    OP
       Oct 7, 2020
    @ruixue 我看看 c 写的。。。好硬核
    ruixue
        8
    ruixue  
       Oct 7, 2020
    @zxCoder Nextcloud 也有同步功能,php 写的更易读,但是因为没有使用分块,所以无法做到增量差分同步和去重存储。。
    yungo8
        9
    yungo8  
       Oct 7, 2020 via Android
    看看 syncthing 吧,go 语言写的。
    maxxfire
        10
    maxxfire  
       Oct 8, 2020
    那如何解决多个不同终端同时修改文件,可能造成的产生多个文件的版本冲突呢 @zxCoder
    zxCoder
        11
    zxCoder  
    OP
       Oct 9, 2020
    @maxxfire 这好像有点复杂啊 目前我的需求只需要做 1 对 1 的同步就好了,不会有同时修改的情况
    maxxfire
        12
    maxxfire  
       Oct 9, 2020
    版本冲突检测,这个是比较基本的功能吧
    zxCoder
        13
    zxCoder  
    OP
       Oct 9, 2020
    @maxxfire 刚才想了下,确实会出现这样的问题,所以我想请教一个问题:比如在两台电脑文件同步,电脑 A 把最新文件同步到服务器上,然后电脑 B 开机,这时候,怎么判断应该把服务器上最新文件同步到电脑 B,还是要把电脑 B 上"最新的"文件(其实是原来的文件)同步到服务器上呢?
    zxCoder
        14
    zxCoder  
    OP
       Oct 9, 2020
    @maxxfire 好像我说的这个问题就是版本冲突了。。。理论上服务器端的文件应该是最新的,然后如果电脑 B 没有更新到最新版本之前就修改了,就会产生冲突
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2974 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 14:54 · PVG 22:54 · LAX 07:54 · JFK 10:54
    ♥ Do have faith in what you're doing.