关于思源同步机制的疑问

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

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

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

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

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

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

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

感谢!

  • 思源笔记

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

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

    22391 引用 • 89649 回帖
  • Q&A

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

    8136 引用 • 37079 回帖 • 160 关注

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • EberhardLin 1 评论

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

    兄弟你好,我简单说一下我的方法(以目前最新的 v2.7.0 为例):

    image.png

    先进入「数据历史」;

    image.png

    选择最近的数据快照,点击「标记快照」;

    image.png

    标记快照的名字可以随便起,我是日期(XXXX 年 XX 月 XX 日)+ 做了什么(例:更新 XX 学笔记)。而后可以点击标记快照或标记快照并上传,标记快照就是将该快照标记到本地留存。

    你可能会疑惑,为什么呢?它不是已经在本地了吗?

    image.png

    如图所示,这些数据快照其实都会被自动删除的,你可以在「设置」-「编辑器」-「历史生成间隔」/「历史保留天数」进行设置。所以我们需要标记一份不会被自动删除的快照。

    在本地标记好一份不会被自动删除的数据快照后,我们就可以进行上传到云端了。

    image.png

    如图所示,从这里进入「本地标记的快照」(和「云端标记的快照」)。

    image.png

    这里两个图标就是「上传」和「回滚」。「上传」就是上传到云端,也就是「云端标记的快照」;「回滚」就是恢复到这个数据快照,快照这个词你能理解吧,举个例子:你给你现在的发型拍了张照,半年后你的发型早已改变,你忽然想换回半年前的发型,于是你拿着照片去理发店和 Tony 说“我要这个发型”。拍的这张照就叫快照,让 Tony 帮你恢复就叫回滚。

    「云端标记的快照」界面逻辑不再赘述了。

    我每次本地标记一张快照,都会把这张快照上传到云端。 所以,如果我要回滚,我会直接进「云端标记」的快照进行回滚。


    以上,就是我对数据快照的使用方法,很普通,基本上就是跟着这个功能特性的设计的思路走的。也不知道能不能帮到你,希望对你有帮助。

    3 回复
    1 操作
    EberhardLin 在 2023-01-22 22:41:12 更新了该回帖
    很详细,谢谢!
    tzxxzszy
  • tzxxzszy

    期待更新,对我帮助太大了,谢谢!

  • 这是我之前对一个关于「云容量不够用」的回复: 思源笔记 8G 的空间用完了怎么办? - EberhardLin 的回帖

    这个回帖内容中的第二点「定期备份」你可以了解下,也许这个对你也有用。

    1 回复
  • tzxxzszy 2 评论

    老哥,再请教一下,使用云端的数据快照进行回滚,需要重置数据仓库吗,回滚后需要马上点同步吗?谢谢

    回滚后不需要重置数据仓库吧,一般来说,重置数据仓库是因为云端服务出错(例如忘记密钥)等,又或者某些特定的需求。用云端的数据快照进行回滚就回滚了而已,将云端标记的数据快照回滚本地的数据。虽然我不懂背后的技术细节,但我的理解里,没有需要重置数据仓库的要求。
    EberhardLin
    回滚后,怕同步旧的数据,那你就先编辑一段内容。但我记得似乎回滚后正常来讲,同步不会有问题的,不过我也没遇到过出错的场景,恐怕我的理解比较没有说服力。抱歉。
    EberhardLin
  • kiri2589 3 评论

    我是完全不能接受用快照来恢复数据,因为我不知道什么时候数据丢失了。

    我现在用的就是 2.7.0,如果在 3.0 还是不能解决同步数据丢失问题,我就彻底放弃这个软件了。虽然 joplin 没有这么 NB 的编辑功能,但是 joplin 从来不会丢失任何数据也不会动不动就崩溃

    程序是死的,人是活的。思源笔记除了数据快照来恢复数据,还能用导入「data 压缩包」来恢复数据,也能直接 copy 工作空间「SiYuan」后在设置里设置工作空间的方式来恢复数据,单论备份后恢复数据,思源笔记几乎把能做的都做了,哪怕没有云端,不导出 data 压缩包,一样能直接 copy 整个工作空间来备份数据,日后因需恢复。
    EberhardLin
    但你的描述又似乎是同步问题?我指的是备份和恢复,不是说同步。一个是手动(数据快照),一个是自动(同步)。目前为止,我没有遇到过数据丢失的问题,从数据仓库上线正式版的第一版开始,我就在用数据仓库了,密钥这么久以来都没换(那个时候还是自动生成密钥)。前后经历过三版云端服务改版(同步机制改版)我都没有遇到过数据丢失。
    EberhardLin
    至于 Joplin 的话……我没记错人家也是支持官方云服务或第三方 WebDAV 吧。不知道你的 Joplin 同步用的是什么方式,不过思源也一样可以用 WebDAV 同步啊,你怕官方的同步会丢失数据,也一样可以用第三方的服务器,甚至能用 S3 协议的云同步。
    EberhardLin
  • tzxxzszy 1 评论

    谢谢分享,老实说没怎么看懂链接里的文章 😂 我在实际使用中发现,有时是以云端为准,有时是以本地为准,这一点把我整懵了

    你可以考虑检查下思源笔记应用版本一致否,手机、电脑上的时间是正确的吗等等环境问题,如果你检查了没啥问题,还是这么同步不稳,我帮你 @ D 大,虽然这个帖它应该也看了,但你的帖子问的东西比较多,它不好回复估计。
    EberhardLin
  • kiri2589

    我用 joplin 就是用的 webdav 的方式进行同步,但是 joplin 两个客户端同时在线,绝对不会出现文档被删掉的情况。siyuan 确实可以用历史来回滚。我的笔记有 12GB,图文居多。虽然没有上千个笔记,但几百个还是有的,我怎么知道哪些是被删除的?siyuan 历史里只有时间线,没有标签标明哪些是被删除的。我今天整了一下午,2.7.0 版本也不给力,崩溃了 N 此,而且崩溃后再打开就出现这个界面,好久好久(需要等 30-50 分钟)才能打开。

    图片.png

    1 回复
  • 兄弟我结合我自己的经验和使用体验说说嗷。

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

    1、非常感谢您的回复,出现同步问题后,我也是按照您的这个方案改了同步时间。

    2、历史里面没有冲突的选项

    图片.png

    3、我有两个笔记本,分别是 win11 和 win7,目前 win11 的崩溃后再打开就是一直等待,提示“正在索引文档树”。win7 的崩溃后还未出现这个提示,但也是崩溃了几次。下图为 win11 的笔记本配置,是电脑较旧的原因导致的崩溃?杀毒软件我用的是 windows 自带的,没有安装其他任何杀毒和监控软件。在索引文档树时,对 CPU 还是有些占用的。

    图片.png

    图片.png

    1 回复
  • 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 回复
  • kiri2589 1 1 赞同

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

    再次感谢您的耐心解答。

  • kingli

    现在 V2.7.4 版本增加了同步模式,点同步的时候可以点击同步方向,彻底解决了同步问题。感谢 D 大

    其实 2 端只要第一次同步成功,以后基本不会有问题,大多数问题都出在第一次同步,覆盖云端的数据导致同步问题。

请输入回帖内容 ...

推荐标签 标签

  • Linux

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

    944 引用 • 943 回帖
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    27 引用 • 225 回帖 • 168 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖 • 1 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 2 关注
  • golang

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

    497 引用 • 1387 回帖 • 284 关注
  • 以太坊

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

    34 引用 • 367 回帖 • 1 关注
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖 • 1 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 134 关注
  • flomo

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

    5 引用 • 107 回帖
  • 微软

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

    8 引用 • 44 回帖
  • Pipe

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

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

    132 引用 • 1114 回帖 • 125 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 351 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖 • 62 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    107 引用 • 295 回帖 • 1 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 10 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 75 关注
  • WebComponents

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

    1 引用 • 2 关注
  • 域名

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

    43 引用 • 208 回帖 • 1 关注
  • OpenStack

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

    10 引用 • 5 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 41 关注
  • 创造

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

    179 引用 • 995 回帖 • 1 关注
  • Sphinx

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

    1 引用 • 214 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 16 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 384 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    287 引用 • 4484 回帖 • 669 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    20 引用 • 7 回帖