同步的作用
使用同步主要是在多个设备间进行内容同步,类似博客这种作用,但更为私人。 我的主要应用场景是同步我Obsidian的文档,如果没有同步,这个文档的限制是很大的。 电脑不在身边,如果想记录一些东西,只能放在手机上或者云笔记。
这时候问题就来了:
- 在其他设备记录的内容同步必须是靠复制粘贴,费时费力,而且无法快速整合内容。
- 一些在电脑上记录的文件需要查阅,手机上是没有对应内容的。
- 云笔记便可以解决上述两个问题,甚至可以分享给第三方,但云笔记上随着内容的增加,做备份就很困难了。
- 云上的内容本应该是我们自己生产的,但用户很难本地拥有了。
- 所以目前使用语雀作为第三方分享共同编辑的一个平台,以及少量的重要内容备份。
- 但本地是内容生产的主要阵地,Obsidian+插件Remotely Save可以做到这个。
这时候,你会发现,问题又出在自己解决问题的复杂度上,虽然可以我认为做这些事情还是比较简单的,但需要花费的维护搭建成本对于大部分人来说还是代价比较高的。 (嗯,这时候需要认真分析一下自己的需求,选择适合自己的方案。)
实现方式
看到这里,可能是要看我如何实现的笔记同步。
原理本质上就是,Obsidian的本地存储库,这个安装后就有了,没有压力。 重点在WebDav上面,通过WebDav来进行文件的同步。
实现的方式有以下两个:(我都有使用)
- 申请一些云盘厂商提供的WebDav服务,这个比自己实现的要稳定。我使用的是https://infini-cloud.net/新人可以想办法得到20G的免费空间。然后申请需要使用的api就行。
- 本地搭建一个云盘服务,同时就兼容WebDav,熟悉NAS的人特别适合这个方法。我的实现方式有一些不同。
原生的实现方法
我比较喜欢linux系统上搞事情,一是很熟悉,二是扩展性很高,不受限制。 操作系统直接使用Ubuntu,工具包很全。安装zfs文件系统,通过文件系统将本地的硬盘整合为一个大盘进行管理,甚至盘够多的话可以做raid系统容灾备份。将系统里划分一块空间来做云盘服务,这里我对一些关键的文件进行了rsync命令的定时备份操作,这些重要文件是不能丢失的(注意,硬件上最好可以分开)。
云盘服务使用了Cloudreve来实现,跟着官方配置参数就好。创建好的云盘就本身支持WebDav.
最后需要有一个公网ip,这个每年阿里云或者其他服务商都有价格比较便宜的云服务器(70到90元一年)就有了一个公网ip,如果可以从自家宽带申请下公网ip更好,甚至可以找一些免费的反代服务(例如natfrp)
在本地和服务器端使用原生的frp搭建就可以拥有全网同步功能了。
其他
因为组件除了依赖公网ip,一般大厂的服务很稳,所以大部分都是本地出问题,而本地的部署一般在手边,很容易就解决了,所以整套方案对个人来说很稳定,我这边经历过断网,本地电脑断电这些问题,文件也没有丢失。
同时,本地的这个Ubuntu电脑是一个笔记本,还挂着pt共享等服务。云端的服务器如果有其他需求也可以互不干扰。
要注意实现的时候,zfs文件系统应该要覆盖盘上的内容的,所以相关命令小心,做好文件备份。
重新开始的难度
如上面所述,云服务器上需要一个frp服务,这个有很多一键安装的脚本,然后开启systemd服务就可以。 本地硬盘,但一般不移动,风险较低。这里最薄弱的可能是本地网络,需要查看网络连接情况。云盘和linux本身长期运行很稳定。