关于思源同步机制的疑问

本贴最后更新于 458 天前,其中的信息可能已经水流花落

本人纯小白,以前就丢过几次笔记,这次春节回家用老电脑同步又出现了一大批冲突文档,得一个个手动删除,这一连串事件把我搞懵了,原来我一直都没理解思源的同步机制,所以请教这几个问题?

1.在设备上点击同步后,究竟是以云端最新版本为准,还是以本地最新版本为准?

2.如果云端覆盖本地的话,是融合本地和云端二者的数据,还是将本地数据删除后再以云端数据替换之?比如:春节前我在主力电脑上已经把本地和云端数据同步了(148MB 大小),而春节回家所用的老电脑的版本是很早前的版本(170MB),经过一段时间的使用,我已经在主力电脑上对旧版本进行了删剪和整理使之变成了 148MB 大小,结果我在老电脑上点击同步,直接将本地 170MB 的数据覆盖到云端,使得笔记中很多已被删除的文档又跑回来了。

因此我想搞明白思源的同步机制和印象笔记、wolai 之类笔记有什么本质区别,为什么我使用它们的时候没有出现过这种问题,同步是自然而然的,至少没有引起过我的注意和思考

3.我查看了论坛的其他回复,说可以使用数据快照标记后进行版本回滚,本人纯小白,有没有具体教程?

4.如何批量删除冲突的文档?

感谢!

  • 思源笔记

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

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

    18677 引用 • 69674 回帖 • 1 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    6542 引用 • 29405 回帖 • 245 关注

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 兄弟我结合我自己的经验和使用体验说说嗷。

    1. 两端同步,数据出错其实不是两端同时在线的问题,而是两端同时同步的问题。只要两端同一个时间段内同步,就很容易出现问题,这个我找不出证据,需要懂技术的人来说。我的理解就是本地把数据上传到服务器,两端同时上传的话,两份同个时间段的数据都上传到服务器,那么就会出现冲突,有冲突就容易出错。
      • 就思源笔记而言,要解决的话可以将两端同时改为手动同步,并且启动的时候不要同时启动(启动的时候会执行一次同步),这样的话就可以两端同时在线,但是同步的时候最好手动同步一次。
      • Joplin 我也用过,但是本地优先的笔记软件同步数据上云端,两端同时同步就会很容易出错,早期的有道云笔记也是这样(重构的我没用)。
    2. 谁知道哪些被删除的问题,这个我觉得是本地优先的具备云端同步功能的笔记软件都具备的问题,但思源如果出现被删除,你可以在数据历史里找到,因为你本地的操作数据历史都会记录(根据设置的历史生成时间),还会生成冲突文档(可以在设置里设置为不直接生成,在数据历史中生成),换言之,当你用思源笔记的时候发现数据被删了,可以在数据历史中找到,并且会标出是冲突文档。(不过数据历史有时间,当然你也可以设置很久很久,这本身是一个保险机制,其他软件甚至都没有,数据出错被删除、消失了也没法在本地找回来)。
    3. 打不开思源笔记 & 使用思源笔记体验不佳的问题……因为每个人的机器配置和使用环境都不一样,很难讲具体是什么原因导致的,尤其是 2.7.0 崩溃 N 次,我感觉不是思源笔记的问题(因为我自己用没什么问题),但我也不清楚是什么原因,不好意思啊。
    1 回复
  • 其他回帖
  • kiri2589 1 1 赞同

    嗯,您的回复非常不错,解释了我不少疑问。同步问题昨天我两台电脑分别登录,交替编辑后同步,数据一切正常。昨天一直崩溃的问题应该也找到了,是 ORC 软件的问题,后续继续关注,希望越来越稳定。

    再次感谢您的耐心解答。

  • EberhardLin 1 1 赞同

    冲突文档可以在「设置」-「云端」-「同步冲突时生成冲突文档」设置。

    image.png

    就像该设置的说明一样,不管开没开,如果出现冲突文档时,数据历史都会有记录,所以如果数据历史没有冲突文档(我没记错的话,冲突文档的命名会在原文档后加上时间,但因为我没遇到过冲突文档,所以希望你不要太在意这句话),就说明没有冲突文档。

    其次就是,我觉得你的两台电脑都出现崩溃多次的现象,是不是该考虑暂时不用思源笔记,来排查究竟是什么原因造成无法正常使用思源笔记,例如电脑后台的某个进程之类的,因为这方面很明显是不正常的。当然也可以说是思源笔记的问题,但目前我自己使用没遇到过这样的(早期版本崩溃过,但随着更新我似乎没再遇到过崩溃),所以我个人不太觉得是思源笔记本身的问题。

    最后因为你无法正常使用思源笔记,所以我将用户指南中关于同步这一段给你贴出来:

    工作原理

    思源通过对比云端数据快照和本地数据快照进行相应操作:

    如果快照相同则忽略本次同步

    如果快照不同,则将本地距离上次同步的变更上传到云端,将云端最新的变更合并到本地

    如果两端的变更没有冲突则直接合并

    如果存在文件冲突,则以本地为准覆盖云端,同时拉取到的云端冲突文件会归入到数据历史中

    同步每隔一段时间自动进行,时间间隔算法描述如下:

    数据变动后 30 秒如果不再发生变动则进行一次对比,如果继续发生变动则顺延 30 秒

    没有数据变动则按 5 分钟、8 分钟、16 分钟、32 分钟……递增间隔

    场景例举

    从上述工作原理我们可以得知,思源仅支持在多设备上交替同步数据:设备 A 上同步完成以后设备 B 上再进行同步。无法支持多设备同时同步,这样会发生无法预期的数据覆盖。

    正常场景

    1. 在设备 A 上编辑后执行同步(通过自动或者手动触发同步),此时云端数据会被设备 A 数据覆盖,既云端和设备 A 保持数据一致
    2. 在设备 B 上执行同步,此时设备 B 数据会被云端数据覆盖,即云端和设备 A、B 保持数据一致
    3. 设备 B 上编辑后再次执行同步,此时云端数据会被设备 B 数据覆盖,既云端和设备 B 保持数据一致
    4. 在设备 A 上执行同步,此时设备 A 数据会被云端数据覆盖,即云端和设备 A、B 保持数据一致

    该场景下,使用同步的过程是在设备 A、B 上交替进行的,这样能够保证数据同步符合预期正常完成。

    冲突场景

    1. 在设备 A 上编辑 a 文件后同步
    2. 在设备 B 上编辑 a 文件后同步
    3. 此时云端 a 文件会被 B 设备上的 a 覆盖,同时在 B 设备上生成之前 A 设备 a 的历史

    注意

    • 睡眠或关机等突然断网的情况下不会触发同步,请手动点击同步按钮进行同步
    • 请勿同时使用第三方同步盘和思源同步,可能会导致数据损坏
    • 符号链接和隐藏文件不会被同步

    希望对你了解思源笔记的同步机制有所帮助,我个人觉得还是说明的蛮清晰的。

    最后

    如果电脑没法正常使用,还是考虑是否要花费精力去解决这个问题。我自己来说的话,如果遇到这样的情况,我因为我也不太懂技术,更不愿意花费时间去解决我似乎难以解决的问题,所以我可能会在链滴发帖,然后继续使用我能使用的笔记软件(例如你所使用的 Joplin),毕竟工具是死的,人是活的。

    PS:如果我没法正常使用的话,我可能会考虑使用 Obsidian,并且是纯本地使用,因为我不喜欢第三方同步尤其是同步盘同步(特别麻烦且容易出错),需要在跨端同步使用就繁琐点通过云盘来备份-恢复。

    流程很繁琐,但我本身多端需求不是很高,通常都是在一台电脑上完成所有操作,所以这一操作不会太频繁,而很多需要在移动端及时记录的琐碎笔记都是现在 Flomo 上记录。

    1 回复
  • 查看全部回帖

推荐标签 标签

  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 26 关注
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    915 引用 • 931 回帖
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 43 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    172 引用 • 990 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖 • 1 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    492 引用 • 1383 回帖 • 375 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 1 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖 • 1 关注
  • GitBook

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

    3 引用 • 8 回帖 • 1 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 591 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    129 引用 • 793 回帖 • 1 关注
  • C

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

    83 引用 • 165 回帖 • 43 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 93 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    185 引用 • 318 回帖 • 347 关注
  • 电影

    这是一个不能说的秘密。

    120 引用 • 597 回帖 • 2 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    75 引用 • 145 回帖
  • 单点登录

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

    9 引用 • 25 回帖 • 2 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 424 关注
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 692 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 72 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 2 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    369 引用 • 1212 回帖 • 581 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 426 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    16 引用 • 53 回帖 • 123 关注
  • OkHttp

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

    16 引用 • 6 回帖 • 53 关注