很好奇那些无服务器端的照片同步 APP 是如何在客户端记录同步进度的,是有啥特别的算法吗?

2023-11-10 10:03:25 +08:00
 codeself

市面上很多照片同步的 app,都是只是通过某种方式,

比如 webdav,ftp 之类的网络文件共享协议,甚至是 http(s),把客户端上的文件传到 NAS/云盘里去

除此之外根本不会有其他的服务器交互,所以同步的进度/记录是怎么记录的?

1556 次点击
所在节点    程序员
10 条回复
ldlywt
2023-11-10 10:30:02 +08:00
找了很久,也没看见有成熟的 github 开源方案
Yuhyeong
2023-11-10 10:33:52 +08:00
没了解过,不过在有公网 ip 的情况下,rsync 直接挂载另一台机器也能实现吧?
robinchina
2023-11-10 11:18:20 +08:00
我想估计类似 BT 下载吧
wdssmq
2023-11-10 11:18:23 +08:00
应该是查询一遍文件列表和本地的对比。。
nxuu
2023-11-10 11:28:35 +08:00
不应该是在本地留一个同步日志么。。。下一次先读日志再进行同步
bitllion
2023-11-10 14:05:47 +08:00
有个隐藏的日志文件
AlynxZhou
2023-11-10 15:18:03 +08:00
rsync 应该是有关于它的工作逻辑的文章吧,可以看看。然后 syncthing 这种据说是和 BT 下载算法类似?
BeautifulSoap
2023-11-10 15:22:34 +08:00
不用想那么复杂,很多软件同步实际上就是对比文件大小和最后修改时间,复杂点的会给你个是否计算 hash 的选项
同步的时候遍历双方文件对比下,有变化了就直接覆盖重同步就这么简单粗暴,不管你上次有没有同步过连状态都没有
gogod112121
2023-11-10 15:26:37 +08:00
你搜搜 mysql 的主从原理 大同小异
gogod112121
2023-11-10 15:33:38 +08:00
或者看一下 redis 的设计与实现 “复制” 章节部分也有相关的内容

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

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

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

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

© 2021 V2EX