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

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

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

image.png

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

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

image.png

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

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

image.png

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

  • 思源笔记

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

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

    20156 引用 • 77719 回帖

相关帖子

欢迎来到这里!

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

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

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

  • NieJianYing

    好头大 😳

  • ilovesiyuan

    用的最新版本?

    1 回复
  • 88250

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

    1 回复
  • MisakaImouto

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

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

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

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

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

    1 回复
  • MisakaImouto

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

  • 88250

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

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

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

    2 回复
  • MisakaImouto

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

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

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

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

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

    1 回复
  • 88250

    感谢提供信息,抱歉之前我说漏了一种情况,同步过去创建的文件时间的确有可能会大于更新时间,因为文件创建时间是本地系统时间,如果 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
  • 88250

    前段时间修复过一个影响创建时间的问题,这个如果现在不能重现的话忽略吧。创建时间大于更新时间在文件系统上可能会出现,但是思源中不应该看到这个,因为思源用的是 .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 回复
  • 88250

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

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

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

    1 回复
  • MisakaImouto

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

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

    1 回复
  • 88250

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

  • 88250

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

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

推荐标签 标签

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 224 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 561 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 378 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3169 引用 • 8208 回帖
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4599 回帖 • 701 关注
  • BookxNote

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

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

    1 引用 • 1 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖 • 5 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    51 引用 • 190 回帖
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    69 引用 • 190 回帖 • 474 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 7 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    483 引用 • 906 回帖
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 702 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    143 引用 • 3752 回帖
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1234 回帖 • 440 关注
  • CSDN

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

    14 引用 • 155 回帖
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    45 引用 • 113 回帖 • 276 关注
  • 持续集成

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

    14 引用 • 7 回帖 • 5 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 519 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖
  • 996
    13 引用 • 200 回帖 • 6 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 188 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 523 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    148 引用 • 257 回帖
  • Shell

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

    122 引用 • 73 回帖