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

2020-10-07 21:24:59 +08:00
 zxCoder

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

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

2083 次点击
所在节点    问与答
14 条回复
springmarker
2020-10-07 21:27:39 +08:00
rsync
zxCoder
2020-10-07 21:29:11 +08:00
@springmarker 搜了一下 这个只是 linux 系统的命令?
zxCoder
2020-10-07 21:30:55 +08:00
@springmarker 哦哦好像不止 linux
ruixue
2020-10-07 21:35:47 +08:00
有现成的开源的 Seafile,可以去看看代码,主要就是分块存储
MakeItGreat
2020-10-07 21:40:45 +08:00
Resilio sync
Cielsky
2020-10-07 21:48:18 +08:00
syncthing
zxCoder
2020-10-07 21:48:34 +08:00
@ruixue 我看看 c 写的。。。好硬核
ruixue
2020-10-07 22:21:04 +08:00
@zxCoder Nextcloud 也有同步功能,php 写的更易读,但是因为没有使用分块,所以无法做到增量差分同步和去重存储。。
yeqizhang
2020-10-07 23:05:37 +08:00
看看 syncthing 吧,go 语言写的。
maxxfire
2020-10-08 16:53:12 +08:00
那如何解决多个不同终端同时修改文件,可能造成的产生多个文件的版本冲突呢 @zxCoder
zxCoder
2020-10-09 08:53:44 +08:00
@maxxfire 这好像有点复杂啊 目前我的需求只需要做 1 对 1 的同步就好了,不会有同时修改的情况
maxxfire
2020-10-09 09:25:15 +08:00
版本冲突检测,这个是比较基本的功能吧
zxCoder
2020-10-09 10:06:22 +08:00
@maxxfire 刚才想了下,确实会出现这样的问题,所以我想请教一个问题:比如在两台电脑文件同步,电脑 A 把最新文件同步到服务器上,然后电脑 B 开机,这时候,怎么判断应该把服务器上最新文件同步到电脑 B,还是要把电脑 B 上"最新的"文件(其实是原来的文件)同步到服务器上呢?
zxCoder
2020-10-09 10:15:45 +08:00
@maxxfire 好像我说的这个问题就是版本冲突了。。。理论上服务器端的文件应该是最新的,然后如果电脑 B 没有更新到最新版本之前就修改了,就会产生冲突

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

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

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

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

© 2021 V2EX