缓解数据焦虑,思源笔记文件存储介绍 2

缓解数据焦虑,思源笔记文件存储介绍 这个帖子里我罗列了思源本地文件的结构与用途。

本帖会简要介绍一下思源的同步流程及其与本地文件的关系。

工作空间

同一台电脑上可以设置多个工作空间,每个工作空间是彼此独立的。

一个工作空间内和笔记数据相关的文件夹是 data、history 和 repo,如下图。

image.png

data 是最重要、最根本的文件夹,在思源笔记里写的笔记明文存在这里。

history 是 data 的历史版本,也是明文保存的,在思源笔记中进行下列操作时,会从 data 文件夹保存一份副本到 history 文件夹:

  • update。思源每隔 10 分钟会从 data 文件夹保存一正在编辑的笔记副本到 history 文件夹。
  • sync。从云端同步笔记到本地时,会先把 data 文件夹里的笔记版本保存到 history 文件夹,再用云端同步回来的数据覆盖 data 文件夹里的数据。
  • format。使用 优化排版 功能时,会先把 data 文件夹里的笔记版本保存到 history 文件夹,再对 data 文件夹里的文件进行优化排版。
  • delete。手动删除笔记本、文档和资源文件时,实际上是将相关数据从 data 文件夹挪到了 history 文件夹,没有进入系统回收站。
  • clean。用清理未引用资源时,会把资源文件从 assets 文件夹移动到 history 文件夹。

repo 是加密后的 data 文件夹,加密使用密钥是当前工作空间的数据仓库密钥。每个工作空间都可以设置自己独立的密钥。

如果没有设置过密钥,本地就只有 data 和 history 两个文件夹。

本地数据与云端数据

image.png

思源笔记进行同步时,只有 repo 文件夹参与了同步过程,也就是说参与同步的是加密后的数据。

  • 上传。把本地 repo 文件夹里的加密数据上传到服务器的同步目录。
  • 下载。把服务器同步目录下载到本地 repo 文件夹。下载完成后,将 repo 文件夹数据解密后合并到 data 文件夹。

由于从服务器下载的是加密后的数据,所以需要把 repo 文件夹里的数据解密后再合并到 data 文件夹,在电脑 2 上解密使用的密钥要与电脑 1 上加密用的密钥一致。

本地不同的工作空间数据要上传到服务器不同的同步目录,两台电脑上的同一个工作空间要选择同一个服务器同步目录。简单罗列集中情况:

电脑 1 工作空间 电脑 1 密钥 电脑 1 上传到 电脑 2 从云端下载 电脑 2 工作空间 电脑 2 密钥 同步结果
工作空间 1 密钥 1 同步目录 1 同步目录 1 工作空间 1 密钥 1 同步成功
工作空间 1 密钥 1 同步目录 1 同步目录 1 工作空间 1 密钥 2 同步失败。
密钥不一致,解密失败。
工作空间 1 密钥 1 同步目录 1 同步目录 1 工作空间 2 密钥 2 同步失败。
密钥不一致,解密失败。
工作空间 1 密钥 1 同步目录 1 同步目录 1 工作空间 2 密钥 1 同步成功,电脑 1 工作空间 1 的数据会和电脑 2 工作空间 2 的数据合并。
工作空间 2 密钥 2 同步目录 2 同步目录 2 工作空间 2 密钥 2 同步成功

云端数据损坏了怎么办

出现云端数据损坏提示应该是在解密 repo 文件夹的时候,发现解密失败,所以认为云端数据有问题,提示数据损坏了。此时还没有对本地 data 文件夹进行操作,所以对本地数据没有影响。

由于云端保存的是加密数据,一旦出现损坏是没有办法进行修复的,只能从本地重新上传数据。所以解决的办法也十分简单粗暴:

  1. 在电脑 1 上设置一个新的云端同步目录,将电脑 1 数据上传到新的云端同步目录,然后电脑 2 从新的云端同步目录下载数据。
    这种方案旧的同步目录还会保存在云端。
  2. 删除旧同步目录。也可以不删除,留着当个纪念trollface

image.png

同步注意事项

由于云端保存的是加密数据,云端是没法对两台设备上传的数据进行差异分析、合并的,所以不要在两台设备同时往云端上传数据,可能会造成数据损坏。

思源的同步算法详见:https://github.com/siyuan-note/dejavu/

1 操作
qiancang 在 2022-11-12 19:25:29 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • Diamond
    订阅者

    非常赞,尤其是图,很适合我这种小白,另外请教一下,表格中第四种情况“同步成功,电脑 1 工作空间 1 的数据会和电脑 2 工作空间 2 的数据合并。”是不是意味着“同步之后,电脑 1 和电脑 2 都拥有工作目录 1 和工作目录 2 的内容,即从内容上来看,新工作目录 1=新工作目录 2=旧工作目录 1+ 旧工作目录 2” ?

    1 回复
  • yangfan007
    订阅者

    请问不通过云端同步,如何实现两台电脑之间的数据同步比较好、比较安全?

    1 回复
  • qiancang
    订阅者 作者

    不知道你的新旧工作目录是怎么来的。我觉得例子中并没有新建目录。如果你的新旧是从文件夹内容角度,而不是从文件夹数量角度来说的话,那你的结论是对的。

    过程大概是这样的:

    假设电脑 1 的工作空间 1 有笔记本 1,生成了数据快照 1(repo 文件夹里的数据),电脑 1 把数据快照 1 上传到云端的同步目录 1。

    电脑 2 的工作空间 2 有笔记本 2,原来是用的是云端的同步目录 2。

    现在你把电脑 2 的工作空间 2 的同步目录从目录 2 改成了目录 1,电脑 2 会把云端的目录 1 数据下载下来,里面是笔记本 1 的内容,电脑 2 把工作空间 2 的 repo 文件夹数据快照 1 解密后加到 data 文件夹,这样工作空间 2 里就有笔记本 1 和笔记本 2 的数据。

    你退出电脑 2 的思源时,会把工作空间 2 的数据上传到同步目录 1,这样你的电脑 1 就会从云端下载到合并后的数据。

    1 回复
  • qiancang
    订阅者 作者

    不从云端走,那就 U 盘拷呗,还能怎么办。

  • Diamond
    订阅者

    谢谢回复,明白了,我说的新旧是从文件夹内容角度

  • Kitty

    那我想问一下,假如说我是在同一台电脑,然后用浏览器那我想问一下,假如说我是在同一台电脑,然后用浏览器进行本地编同时用软件进行本地编辑 ,也就是说我没有走云服务。那么我是不是就不用担心数据损失的问题

    1 回复
  • qiancang 1 赞同
    订阅者 作者

    你的描述不是很通顺,看不太懂,我只能猜测回答一下:

    思源的笔记文件同一时间只能允许一个客户端访问,不要同时用浏览器和客户端访问同一个笔记,容易出问题。

请输入回帖内容 ...