数据同步旧笔记覆盖新笔记问题

本贴最后更新于 435 天前,其中的信息可能已经时过境迁

快照中的旧笔记覆盖新笔记

image.png

上图是本地快照的记录,MisakaDesktop 是我当前使用的电脑,MisakaWork 是公司的工作电脑,常年开机,下班只是关屏幕。

晚上写完笔记后回顾了一眼,发现有一个笔记的数据被回滚了,仿佛没有编辑过,好在通过文件历史找回来了。第一时间想到了同步的问题,于是在云端快照中找到了上图 2023-09-09 00:01:09 这条快照,下载到本地,通过对比发现是把 2023-09-08 20:05:07 快照中的笔记跟回滚了,我通过对比发现,明明左边笔记的更新时间更晚,但是还是被工作电脑的笔记给回滚了,有点费解。下面是截图:

image.png

笔记没有改动过,但是多出一些文件历史

其中还有几个笔记也更新了,我确信最近是没有打开或改动过这些笔记的,但是却出现在了更新记录中。

image.png

我在文档树查看其中一个笔记的更新时间是一个月前:image.png。在文件历史中却有很多修改记录,让人摸不着头脑:

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22250 引用 • 88929 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • MisakaImouto

    还有一个问题就是,这种情况是没有冲突提示和生成冲突文件的。如果不回头看的话就真的没法发现。😭

  • NieJianYing

    好头大 😳

  • 用的最新版本?

    1 回复
  • 是不是文件时间被外部更改过? 在两个设备上看下 .sy 文件的最近修改时间,如果超过被覆盖的系统的系统时间的话是正常的同步现象,这种情况会发生在手动解压过文件,而不是用导出导入。

    1 回复
  • MisakaImouto

    可以确定的是,工作电脑在下班后就没有人为操作过,文件时间不会被手动修改。

    我刚才远程查看工作电脑该笔记 sy 文件的信息,发现创建时间大于更新时间:image.png

    自己电脑上的创建时间和更新时间是一样的image.png

    我个人感觉就像是工作电脑同步了个人电脑的数据后,先修改了文件的创建时间和更新时间,然后在文件解析成功前进行了一次推送,把旧数据推送到了云端,出现了这种状况,我的云端快照记录是这样的:image.png。红色标记的是旧数据覆盖新数据的快照,绿色标记的快找时间跟前面工作电脑文件的创建时间非常接近。

    当然,以上都是猜测,不知道能不能算是一个思路。

    1 回复
  • MisakaImouto

    工作电脑和个人电脑都是 V2.10.4

  • 创建时间大于更新时间是不正常的,没有外部变动的话不会出现这种情况,思源本身是不会修改创建时间的(技术上做不到,golang 里面没有修改文件创建时间的方式),只会修改更新时间,同步时也是安装更新时间对比的。

    如果没有手动操作的话就只有一种可能就是被其他程序修改了创建时间,并且同时修改了更新时间,导致更新时间大于正常手动编辑文档的设备上的时间,这样的话自动同步时文件更新时间大于云端手动编辑的时间就把云端覆盖了,覆盖完云端后手动编辑文档的系统上因为更新时间小于云端所以就下载云端覆盖回旧数据。

    目前的建议是在手动编辑系统上面编辑一下这个文档,看下文件系统上 .sy 时间是否正常,然后同步一次,然后再到远程设备上同步一次看看时间是否也正常。

    2 回复
  • MisakaImouto

    感谢 D 大建议 🙏 ,我新建了一个工作空间和云端目录进行测试,发现文件的创建和更新时间确实会被同步和编辑影响。下面是我的测试步骤

    双端的云端同步设置如图:image.png

    新建了一个笔记在 A 端进行编辑,在编辑后,该笔记在文件资源管理器中的创建时间和更新时间都变成了刚刚的更新时间:image.png

    此时在 B 端同步,同步后查看该笔记在文件资源管理器中,更新时间与 A 端一致,创建时间大于更新时间,应该跟同步时间差不多:image.png

    我的系统均是 Windows10,版本是 V2.10.4,新建的空间,没有使用插件主题等;这个同步结果与之前主空间一致。

    1 回复
  • 感谢提供信息,抱歉之前我说漏了一种情况,同步过去创建的文件时间的确有可能会大于更新时间,因为文件创建时间是本地系统时间,如果 A 系统时间快的话创建的文件时间就有可能大于 B 系统同步过来的更新时间。不过这个不影响同步,同步对比用的是更新时间,你对比一下两个系统的时间,是不是误差大于 7 分钟了,如果本地更新时间早于云端文件更新时间 7 分钟以上的话会忽略本地修改,即使用云端覆盖本地。

    这个同步结果与之前主空间一致。

    这里我没有看明白是有问题还是没有问题 😂

    1 回复
  • qiancang

    我之前也遇到过文档创建时间大于更新时间的情况。

    我在 A 电脑上将今年的日记从 2023 文档下拖到了 2023/月份(1 月到 8 月) 子文档下。

    B 电脑打开思源笔记完成同步后,2023 文档下及 2023/月份 出现了重复日记,2023/月份 下的日记创建时间大于更新时间。

    1 回复
  • MisakaImouto 1 1 评论

    明白了,那前面的测试结果是符合预期的,前面的测试主要是验证同步是否会修改创建时间,这个测试无法复现昨天被覆盖的情况,只能以后再多留意一下了。

    A 系统和 B 系统时间是一致的。

    最后想提一个功能,就是在文件历史或数据快照中支持 sy 源文件的查看(纯 json),因为插件和主题有时会对块属性修改,被修改属性的块在文件历史或数据快照中只能预览内容的改变,无法查看属性是否变化;长远来说之后会有属性视图,提高属性编辑的易用性,修改属性会成为常用操作,却无法在历史记录中展现。提供 sy 源文件查看虽然门槛比较高,但是至少有方式去对比分析。

    最后感谢 D 大的讲解。🙏

    1 回复
    主要也是怀疑我在 A 端更新完笔记后,B 端在之后的某个插件修改了文档中块的属性之类的,导致 B 端笔记覆盖了 A 端。但是备份源文件再回滚对比太麻烦了,就没有尝试了。
    MisakaImouto
  • 前段时间修复过一个影响创建时间的问题,这个如果现在不能重现的话忽略吧。创建时间大于更新时间在文件系统上可能会出现,但是思源中不应该看到这个,因为思源用的是 .sy 中自己保存的属性。

  • 88250 1 赞同

    源文件对比等后面考虑下,主要是普通用户可能用不上。

    最后,我建议不要长时间开着某个设备(除非是 Docker 部署场景),因为可能有的插件会定时修改属性或者数据来完成某种功能(这仅仅是我的猜测),这样多端同步会有问题,最好还是同时只有一个端在运行比较可靠。

  • MisakaImouto

    又有一篇笔记 09 发生了数据回滚,在早上 10:21 的时候编辑了文件:image-20230915145314901

    然后刚刚 14:37 查看,发现笔记回滚,通过数据历史找到 3 个相近快照,

    • 修改前:10:06:32
    • 修改后:10:22:18
    • 回滚的快照:10:30:32
    • image.png

    下面是三个快照的对比:

    • 修改前和修改后快照对比,是正常的
      • image.png
    • 修改后和被回滚的快照对比,回滚的更新时间早于更新时间
      • image.png

    跟上次的共同点:1. 更新的都是表格内容,然后被回滚;2. 回滚的数据快照备注都是:Cloud sync merge

    这里是日志:systemlog.7z

    @88250 这次只有单机在线,麻烦 D 大分析一下

    1 回复
  • 文件系统上这个文件的更新时间正常吗?

    另外,日志中显示还有另一个 Android 设备在线,所以不太好排除是不是 Android 上有更新覆盖的。

    1 回复
  • @88250 D 大要不要考虑在启动的时候加个本地时间与网络时间差值的判断,避免更新时间导致的同步异常。

    1 回复
  • MisakaImouto

    因为已经更新过这个文件了,文件系统的更新时间已经看不了正不正常了。

    安卓端设置的完全手动同步,云端快照中也没有安卓的快照记录,这点跟上次不太一样。image.png

    1 回复
  • 官方同步有时间校验的,但是允许误差在 3 分钟以内,所以还是可能存在某个设备时间晚于/早于其他设备。

  • 好的,我这边也看了下代码,暂时找不到原因。这样吧,下个版本我们加一些详细的日志,升级后麻烦继续帮忙留意这个问题,感谢。

请输入回帖内容 ...
MisakaImouto
索性去不顾一切,肆意赴未知明天 深圳

推荐标签 标签

  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    169 引用 • 506 回帖
  • 自由行
    10 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    200 引用 • 120 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    5 引用 • 107 回帖
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    176 引用 • 815 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 2 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 637 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 74 回帖 • 1 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖 • 3 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    75 引用 • 258 回帖 • 617 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 25 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 53 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 5 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 588 回帖
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3453 回帖 • 201 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    729 引用 • 1327 回帖 • 1 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 511 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 232 回帖 • 1 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 43 关注
  • 电影

    这是一个不能说的秘密。

    120 引用 • 599 回帖
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖