关于思源笔记使用第三方同步盘可能造成数据损坏的问题

第三方同步盘可能造成数据损坏

先说结论:目前因为使用同步盘带来的数据损坏问题是无法彻底解决的。

原因:同步盘在同步时会锁定文件,此时思源就无法写入文件。加上一些不确定的原因(比如同步盘自身卡顿、网络质量不好等)会导致锁定文件时长不确定,思源只能在很短的时间内(300-400 毫秒)尝试重新写入(如果重试时间过长,还会带来其他问题),这时如果文件还是被同步盘锁定,则只能在旁边生成临时文件以备手动恢复。

这个问题要彻底解决只能由思源来锁定文件,但这样的结果就是同步盘无法同步文件,失去了使用第三方同步盘的意义。

一个折中方案

因为思源现在还没有官方同步,所以我们暂时采取了一个折中的方案:有数据写入后思源锁定 1 分钟,如果没有继续数据变更则自动解锁。解锁以后同步盘就可以同步了,但是这个期间内如果发生数据变更,就依然还是会面临上面提到的问题。所以这个方案只是降低了问题发生的概率,并不能彻底解决问题。

移动端私有数据

在没有更好方案解决这个问题前,我们不会放开移动端数据,因为如果再加上一个移动端设备,第三方同步带来问题可能会更严重。这不是因为我们想逼迫使用者订阅付费,而是这个关乎稳定性的问题目前实在是把握不住。

建议

尽量不要在运行时使用第三方同步盘进行实时同步。思源内核启动之前同步好数据,然后在使用思源过程中暂停同步盘,待关闭思源内核以后再打开同步盘同步数据。虽然麻烦,但是安全……

大家如果有更好的思路欢迎随时讨论。

广告 我要投放

欢迎来到这里!

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

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

    那如果用 ashampoo back up pro 这个备份软件定时把文件备份到其他盘,也会出现这种情况吗?之前第三方同步出问题主要是同步备份数据的时候容易出问题。后来把备份的数据取消同步了,就没出过问题了

    1 回复
  • 88250
    订阅者 作者

    在内核没有开启的情况下用其他工具备份(复制)data 文件夹的话不会有问题。

    1 回复
  • a1993613
    支持者 订阅者

    内核没有开启是什么意思?是指没打开思源软件的时候吗?

    1 回复
  • 88250
    订阅者 作者

    嗯,桌面端启动以后正常使用时内核进程(SiYuan Kernel)是开启的,如果在设置 - 外观中取消勾选这一项,那么关闭界面后内核就不会退出:

    image.png

  • dayuanlilmaster
    支持者 订阅者

    我目前用坚果云同步笔记所在的文件夹,还没有出现过题主说得问题。不过不知道是不是因为我每一篇笔记的体积都比较小的原因。

    1 回复
  • 88250
    订阅者 作者

    这个问题受文件多少和大小、网络质量、设备资源使用等因素影响,应该不会经常遇到,但是一旦遇到就比较麻烦。

  • luyeok 1
    支持者 订阅者

    分项一个我的同步思路:

    1. 使用 cryptomator 创建 sync_data 加密同步文件夹;
    2. 设置思源工作空间目录为:C:\Users\Username\Documents\SiYuan
    3. 把工作空间目录中的文档文件夹(data)移动到 Cryptomator 加密同步的 sync_data 文件夹,同时删除工作空间目录的文档文件夹(data);
    4. 在工作空间目录中建立 sync data 的软连接
      mklink /d c:\user\username\documents\siyuan\data z:\sync_data

    注:

    1. 之前把整个工作空间目录直接放到网盘同步,经常会造成冲突,且冲突的主要是 conf 文档。
    2. 以上方法在使用中,目前尚未发现数据冲突的情况。稳定性还是不错的。
    1 回复
  • luyeok 1
    支持者 订阅者

    我建议作者可以研究下 keepass 的同步思路,keepass 是直接把硬盘上存有密码的数据库文件解密后读入内存。本地修改后,再存入硬盘。在实际的使用中,可以直接把存有密码的数据库放到网盘上同步,基本上不会出现同步的问题。这么做好处有两点:1. 硬盘上的文件是加密的,读入内存后存放在内存安全区域,数据比较安全,甚至不怕软件扫描硬盘;2. 因为改动是直接在内存上作出的,然后手动或者定期存入硬盘,这个时候可以检测硬盘文件被网盘占用情况,改善了同步冲突的问题。

    当然,keepass 数据库非常的小,所以可以整个读入内存。不过我觉得这个思路不错,思源笔记可以将笔记分成冷数据和热数据、图像和文字,分开存储。

  • cuijianzhe
    捐赠者

    用 git 同步,也是 conf 文件搞事

请输入回帖内容 ...