关于 Obsidian 的多端同步
关于笔记软件
早前用过很多笔记软件,最初用的是印象笔记,后来转到为之笔记、OneNote,再往后用过 Notion。
弃用的原因各种各样,但大部分还是因为订阅费我觉得不划算以及手机 App 难用的问题。
后来我甚至直接在本地用 Markdown 编辑器 Typora 来记笔记了,反正我的笔记内容几乎只有文字。
我已经忘了当初是怎么发现的 Obsidian 这个软件的了,它似乎正好在我决定用 Markdown 记笔记的时候出现。我甚至不需要想办法把我原本的笔记上传进去,直接在 Obsidian 里添加笔记库就行了。
关于同步插件
此前用过的那些笔记软件,虽然说手机客户端并不太好用,但至少拿来看看笔记还是没什么问题的。
Obsidian 也有手机客户端,而且手机客户端还挺好用,但 Obsidian 的官方同步服务是收费的,且只有同步服务会收费,而价格在我看来也同样不划算。
不过 Obsidian 有个强项,就是它有插件库。也不知道是从哪知道了一个 WebDAV 同步插件,叫“Remotely Save”。
这个插件我用了好几年了,它功能很多,可以同步到 S3 对象存储,也能 FTP、SFTP 等同步,我主要是用它同步到坚果云的 WebDAV。
未能解决的问题
但其实我并没有觉得 Remotely Save 有多好用,主要是目前遇到的一个问题没能得到解决。
打个比方,我在“设备A”和“设备B”上都放有一个名为“笔记1.md”的文件,进行了同步之后服务器上也存放有这个笔记。
随后我在“设备A”上删除了这个“笔记1.md”文件,进行了一次手动或自动同步,那么此时理论上服务器里也删除了这个笔记文件。
但如果我此时打开“设备B”,里面此时是存在这个笔记文件的,我手动或系统自动进行了一次同步,服务器就会检测到“设备B”本地存在一个“笔记1.md”。
于是就将“设备B”上的这个“笔记1.md”当作新的笔记上传上去了。
然后再打开“设备A”进行一次同步会发现,这个笔记又回来了。
想完全删除掉这个“笔记1.md”就需要在“设备A”上删除同步后到“设备B”上也删除一次,这样再次打开“设备A”的时候才能保证服务器和“设备A”里都不存在这个“笔记1.md”。
但问题在于我不止有两个设备需要进行同步。我不可能每次要删除笔记都打开所有设备每个都执行一次删除。
当然这还不是最离谱的,如果将“笔记1.md”从“文件夹1”移动到了“文件夹2”,同步后在“设备B”上就会遇到服务器上“文件夹1”里没有这个笔记文件,“文件夹2”里有这个笔记文件,于是“设备B”就把后者同步下来的同时,将前者当作新的笔记上传上去了。
使用 Git 同步
我看到很多人选择直接用 Git 进行同步。
Obsidian 对我来说最大的优点就是,它其实可以看作是一个本地带实时渲染的 .md 格式文件管理器,所有的笔记内容其实就等于是存储在本地的一个 .md 格式 Markdown 文件而已。
也就是说,我其实可以直接 git push 到 GitHub 或者 Gitee 上去保存。
那么关于上面我提到的问题,解决办法就很清晰了。
但这样会比较麻烦。在“设备A”上 push 后,在“设备B”打开 Obsidian 之前还得先进笔记主目录里执行 push。而手机端想要这样操作就很是麻烦,当然也可以通过 Obsidian 的插件来解决。
不过即便很麻烦,我觉得也比上面我提到的每个设备都得进行一次删除要方便多了。
实时同步
Remotely Save 这个插件其实我已经弃用了。
主要是几周前在某视频网站发现了一个似乎更好用的插件。叫“Fast Note Sync”。
先说这个插件的缺点吧。它需要配合服务端来使用:Fast Note Sync Service。服务端是需要安装在服务器里的,也可以用 Docker 运行,这也就是说,想用首先得有一台服务器,还得有公网 IP。
这样算下来其实还不一定能比找人拼车买 Obsidian 官方同步服务便宜。
当然其实这个对我来说不算缺点,因为我确实有服务器资源。
安装好后试用了一下,这个同步插件确实跟作者宣传的一样,几乎是无感同步。
但我尝试手动同步试了一下,发现我上面提到的多端同步,笔记回归的问题依然存在。
不过后来发现这个同步插件实际上早就解决了笔记回归的问题,这一点之后再提,本文只记录折腾的过程。
网页版
这是一个 Docker 版的 Obsidian:ObsidianDocker。这玩意初次安装的时候还给我服务器干崩一次……
看上去好像是在本地模拟出来了个虚拟机,然后通过网页远程连接到虚拟机,再对 Obsidian 进行操作。
说真的这太怪了。
但这样出来的 Obsidian 有个好处,就是在使用上完全不需要关注多端同步的事情了,以后写笔记,看笔记都打开这个网页进行操作,所有的内容都在网页上进行。
有点像我当初用为知笔记的时候的操作,完全不用客户端,全用网页端操作。
但这样会有三个问题。一是需要服务器,二是手机上访问页面根本没法用,三是操作有延迟。虽然我只是装好看了两眼就删了,没仔细体验过,但我听说这个还有中文输入法的问题,想要输入中文,还得在虚拟机里装中文输入法。
继续使用插件同步
还是回到 Fast Note Sync 插件。
这个插件我并没有删除,毕竟我还是需要一个同步插件的。
就在我写这篇文章的前一天,我在我的笔记本电脑上删除了一篇笔记,回头用手机查看这篇笔记的时候我心里正想着,我还得找到这篇笔记再删除一次,然后我正盯着这篇笔记的标题呢,结果同步完成时,它突然消失了。
这时候才发现,其实这个同步插件是能解决笔记回归的问题的。
然后我又测试了几次,有时候笔记会莫名其妙回归,有时候又不会,总之我测试的结果是:只需要保证进行了完整同步就行。
例如“设备A”上删除了“笔记1.md”,需要进行一次完整同步,打开“设备B”自动同步后里面的“笔记1.md”就会被删除。
结
用了几年 Remotely Save,笔记回归的问题也跟着困扰了我好几年。不过我其实不确定 Remotely Save 的后续版本是不是已经没有这个问题了,现在换成 Fast Note Sync,就不去回想之前的事情了。
Fast Note Sync 的服务端有个网页服务,这点很方便,有时候没法用我自己的设备就可以直接打开网页查看笔记。
这篇文章只记录折腾过程,不是笔记,也不是插件推荐。仅仅只是感慨一下,Obsidian 我用了差不多快 5 年了,这 5 年每次打开 Obsidian 对笔记进行删改的时候都会想到我还有几个设备,上面的 Obsidian 已经好几天没打开进行同步过了,随着时间推移,过去了越久我越不想同步,生怕打乱了我常用设备上的笔记目录,给我回归一堆我很早之前就删了的笔记。
但这 5 年不知为什么我从没想过找个时间解决这个问题。有些事情成了习惯,即便事情本身不合理,也会觉得理所当然。