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

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

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

image.png

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

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

image.png

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

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

image.png

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

  • 思源笔记

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

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

    28443 引用 • 119762 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 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
索性去不顾一切,肆意赴未知明天 深圳

推荐标签 标签

  • Access
    1 引用 • 3 回帖 • 13 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 517 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    29 引用 • 202 回帖 • 54 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    9 引用 • 75 回帖 • 1 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 9 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 191 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 9 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 259 关注
  • Excel
    32 引用 • 29 回帖 • 1 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    316 引用 • 547 回帖 • 4 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    16 引用 • 143 回帖 • 6 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    11 引用 • 15 回帖 • 1 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    269 引用 • 666 回帖 • 1 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1449 引用 • 10092 回帖 • 489 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 75 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖 • 1 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 87 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • 千千插件

    千千块(自定义块 css 和 js)
    可以用 ai 提示词来无限创作思源笔记

    32 引用 • 69 回帖 • 1 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 261 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 80 回帖 • 1 关注
  • 星云链

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

    3 引用 • 16 回帖
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 687 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 99 关注
  • flomo

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

    6 引用 • 144 回帖