ob 就象当年的TC,稳定后,时间久了,就把里面的道道机制都忘得差不多了,但不影响使用TC,因为软件自洽性确是好,个性好后,就可以不用折腾了。
这样描述可能就明白了:
设定ob的附件目录 A,A里暂时无文件,为了不让移动设备索引,里面先放置了一个.media文件。
设定ob的日记目录B,B里暂时也无文件,也放了一个.media。
rs同步,不同步空目录,也不同步.media文件。
这样,ob运行时,创建日记和图片也不会自动创建这两个目录。
现在,我当然知道是什么回事,但若干岁月之后,可能就想不起,以为碰上怪异了。
所以,我建议,在安全和全面这两处,能做好些就做好些。
昨天,按你的方式,试把win上的一个骨架OB,放到安卓上,用rs同步,结果,反复出现两侧无故删文件,最后,要从win的回收站找回删除掉的文件,但安卓的runjs插件运行的脚本,也不知什么原因,运行不正常。最后,只得用goodsync整库同步到安卓,才能在安卓上恢复正常。分析,应付,找回文件,足足花了个多小时。
就同步十多个文件,也这样,若是文件多,就更加不清不楚了。而且导出的同步计划,列出了所有文件,在win里查看都响应缓慢,里面的内容,也不适合最终用家,只适合门清的开发人员。
过程是这样:
win建了一个测试的骨架ob,已多次rs,之前主力Ob里修改的模板和脚本是直接用资源浏览器里复制粘贴到骨架ob。
昨晚则是在goodsync里建了一个任务,单向复制这些模板和脚本到骨架ob(我认为这个就如正常的文件操作,应该不影响rs)
然后,
win ob, rs 同好步
goodsync 整库同步到 android
删除android ob里的数据目录和文件,只保留了.obsidian目录和需要有.nomedia文件的空目录和.nomedia文件。
android ob 重启,提示一堆文件缺失,直接rs
android ob 重启,runjs 提示模板目录里一个js没有了,查看存储,发现被删除了,win 里回收站恢复文件,win ob rs
android ob rs,又发现另一个目录几个文件被删除,又在win回收站里恢复
win ob rs, android ob rs
win ob 所有插件功能正常,但android ob上runjs插件要运行的脚本一个也无执行,反复在android ob上禁用启用runjs,结果一样,但相关脚本又已在存储里。
试在win ob里导出计划,分析一个文件有无被删除都很麻烦,在win ob里也不好查看。
最后,只得win ob的rs 开启100%模式,rs同步一次,然后整 库goodsync到android ob。
android ob终于运行正常了。
fyears
(fyears)
2024 年5 月 10 日 02:53
104
删除android ob里的数据目录和文件,只保留了.obsidian目录和需要有.nomedia文件的空目录和.nomedia文件。
已经说过了啊,rs 不识别这个规则,对于 rs 来说,你就是删除了啊。此外,真的,不要混用两个软件。混用软件出现混乱,是很常见的。不要做过多假设。
留一个空库下载,不就是要这样处理吗? 不管是在那台设备上删除,都是删除啊。
现在最可靠的,还是整库复到新设备,然后让rs合库同步一次。但概念上,不明白,既然A和B是一样的,那为什么A里的rs能正常同步,到了B里反而不能正常同步。
goodsync保证了A和B在文件层面上是完全一样的。
fyears
(fyears)
2024 年5 月 10 日 04:30
107
另外这段太复杂了,强烈建议不要混用两个同步软件。只用rs从0开始操作是无问题的。
fyears
(fyears)
2024 年5 月 10 日 04:31
108
这里已经解释得很清楚为什么不兼容 good sync 了。强烈建议只用一个软件不要混用哈。
fyears:
这个不叫空库啊。
我明白你意思,就是要在安卓上直接新建新库,再下载安装rs,再手工配置好rs,再同步,再一步步配置自己的环境。
也就是最后一次同步的信息是写在rs的data文件里的,而且这个信息还要匹配设备,即使文件完全一样,同步信息发现设备变了,也作为未同步过。
那么:
配置里的【重设本地缓存和数据库】,是抹去所有的同步信息,相当于刚配置好rs的webdav的状态吗?
能提供一个功能,在oba已同步后,把oba完全移到另一台设备变成obb,直接把obb也标识成已同步,让obb再同步时,效果如何oba再同步?
能解释清楚同步的规则吗?
我测试的结果是这样,和你的程序逻辑有出入吗?
原本,我以为你把同步信息放在data文件里,但我关闭了混洗后,data里只有纯配置信息。
请问同步信息是放在哪里?
我不知你说的技术难点在哪,是因为同步信息没有被 goodsync完整同步过去吗?导致命中有无有规则,全部下载一遍了。
既然这样,把同步信息也完整同步过去,不就可以了?
fyears:
indexeddb
我搜了一下,在AppData\Roaming\obsidian\IndexedDB,是ob api提供的结构化数据存储接口吗? 能文件级同步给移动端?
fyears
(fyears)
2024 年5 月 10 日 17:03
117
我觉得呢,关于同步机制的细节可以先放一下,这些如果有兴趣了解的话,可以在 github 上详细阅读代码和文档,都是源代码公开的,所有细节都一目了然。如果是通过论坛上一问一答方式,那是一个月都讲解不完的,你上述的几个问题,大部分都在设计文档里的,可以自行查阅哈,细节要深究起来有几千行代码;有一些方向,都考虑过,实际上做起来会有很多边界条件处理,也受限于 obsidian api、web api、云端 api、用户诉求、多端处理、是否适用手机、是否容易对用户解释等各种限制。
此外所有的同步文件,都是“optionate”的,icloud、onedrive、goodsync、syncthing、rclone、obsidian sync (官方)、remotely save 等,都会有略有不同和特有的设计思路和假设,不可能说某款的功能在另一款能重现或者完全兼容,也强烈建议不要混用。比如说 nomedia 文件我之前都没听说过自然不会兼容或特殊处理,一些用户觉得显然的对另一些不是显然的,本插件力图对大部分用户的需求做平衡,做 roi 较高的改动。
原始的“丢文件”问题,就是混用的问题,不要混用,或关闭保护全同步一次之后不混用,就顺畅了;这不是 bug 哈。之前提的的一些建议,都收到了,会综合考虑的。
1 个赞
执行同步-空跑模式
是否不需要上传和下载,但是把同步信息已写入indexdb ?
重设本地缓存和数据库
这个是不是就是清除indexdb所有同步信息,相当于一个无使用过RS同步的库?
我觉得,配置里,缺一个“重置远端数据库”, 这样,不用去web自己删除运端的同步目录,这在停用rs一段时间后,重新启用时,用意义。
目前最需要的是能有一份精简的,只包含pull,push,dellocal,delremote的清单,代替那个同步计划输出,当修改同步提示信息是info时,就是精简清单,debug时就原来的计划。
有个配置:手机显示状态栏(试验),我在安卓上开启,无效果。
同步信息,手机端建议写在左上角home按钮显示多少个文件多少个夹的信息的下面。