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

查看 108|回复 11
作者:codeself   
市面上很多照片同步的 app,都是只是通过某种方式,
比如 webdav,ftp 之类的网络文件共享协议,甚至是 http(s),把客户端上的文件传到 NAS/云盘里去
除此之外根本不会有其他的服务器交互,所以同步的进度/记录是怎么记录的?

  • 因为一些原因导致同步被暂停/打断,下次如何接着上次的进度继续同步?

  • 有同步过的照片文件重新编辑保存了,如何把这个文件覆盖同步到远程?

    问了下ai,加上了点我自己的思考,大概方案是
    [ol]
    使用一种特定的方式遍历照片文件列表(如,按修改时间倒叙)
    遍历文件列表的时候,记录文件名,文件md5,修改时间到和一个本地存储的已上传文件列表进行对比
    如果文件名,文件md5,修改时间中任一项在记录中都没匹配到,加入到待上传列表中
    如果文件名,文件md5,修改时间中任一项在记录中匹配到,并且有任何一项发生变化,加入到待上传列表中
    对待上传列表中的文件进行上传
    上传成功的信息更新已上传文件列表
    [/ol]

    同步, 文件, 进度, 记录

  • ldlywt   
    问了下ai,加上了点我自己的思考,大概方案是
    [ol]
  • 使用一种特定的方式遍历照片文件列表(如,按修改时间倒叙)

  • 遍历文件列表的时候,记录文件名,文件md5,修改时间到和一个本地存储的已上传文件列表进行对比
  • 如果文件名,文件md5,修改时间中任一项在记录中都没匹配到,加入到待上传列表中
  • 如果文件名,文件md5,修改时间中任一项在记录中匹配到,并且有任何一项发生变化,加入到待上传列表中
  • 对待上传列表中的文件进行上传
  • 上传成功的信息更新已上传文件列表
    [/ol]
  • Yuhyeong   
    找了很久,也没看见有成熟的 github 开源方案
    robinchina   
    没了解过,不过在有公网 ip 的情况下,rsync 直接挂载另一台机器也能实现吧?
    wdssmq   
    我想估计类似 BT 下载吧
    nxuu   
    应该是查询一遍文件列表和本地的对比。。
    bitllion   
    不应该是在本地留一个同步日志么。。。下一次先读日志再进行同步
    AlynxZhou   
    有个隐藏的日志文件
    BeautifulSoap   
    rsync 应该是有关于它的工作逻辑的文章吧,可以看看。然后 syncthing 这种据说是和 BT 下载算法类似?
    gogod112121   
    不用想那么复杂,很多软件同步实际上就是对比文件大小和最后修改时间,复杂点的会给你个是否计算 hash 的选项
    同步的时候遍历双方文件对比下,有变化了就直接覆盖重同步就这么简单粗暴,不管你上次有没有同步过连状态都没有
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部