我想干什么

我的工作主力机是 MacBook,家里的电脑则是 Windows 系统。在工位上摸鱼时,我偶尔会写点读书笔记或文章,但经常写不完,需要回家接着码字。

可是我懒,不想每天背着 MacBook 上下班。另外,出于安全考虑,我不想给家里的 NAS 开公网远程访问(尤其是我用的飞牛 NAS ,在经历过之前数据安全那回事后,就更不敢开了)。因此,我开始寻找一套同步方案:目标是在不带 MacBook 回家的前提下,实现工位和家里电脑之间笔记的无缝衔接。

方案选择

手动同步

我虽然懒,但是我至少每天还是会把iPad带回家的,所以最初级的方案就是通过iPad进行每天的手动备份。

具体过程如下:

  1. 在笔记文件全部搬到iCloud上,之后所有的笔记都存在iCloud上,这样就可以保持MacBook和iPad上文件的同步;
  2. 把iPad带回家后,把NAS挂载在iPad上,然后把iCloud上的文件上传到NAS;
  3. 把NAS里的笔记移动到WindowsPC上编辑;
  4. WindowsPC上编辑结束之后再移动到NAS;
  5. 打开iPad,把笔记文件移动到iCloud。

相信各位读到这里应该可以明白我没有选择这个方法的原因,但凡是个正常人我想都不会选择这个方法,在写笔记之前还要先当一下赛博搬运工,估计没几个人会受的了。

而且这种相互搬运的方法有一个最大的问题:如何处理增减文件?我在公司写一篇昨天晚上没写完的文章,写到一半我觉得这篇文章太垃圾了,一怒之下我把它删了,可是我只删了我iCloud里的文章,NAS里的和家里的文章都没删,那么我在搬运的时候还要对比两边文件增减,实在是太麻烦了。 综上,我放弃了这个方案。

OneDrive

基本操作和上一条基本相同,但是唯一的差别是中转站从NAS变成了OneDrive,这样的话,我可以在我的iPad或者MacBook上装OneDrive,那么前半部分的搬运就可以在工位上完成。

然而问题其实和上一种方法基本是一样,就是当来回的搬运工实在是太太太麻烦了。

而且我放弃这个方法还有另一个理由——我家的Windows电脑没有OneDrive,那天晚上试了一下重新装但是一直装不上,发现装不上的原因是电脑里OneDrive文件夹里有一个删不掉的dll文件,于是求助了Gemini老师和Claude老师,告诉我这是一个映射资源管理器图标的dll,要关掉资源管理器才能删,于是让我运行一大堆我已经记不住的指令了…两位老师还是太想帮我解决问题了,然而折腾了一晚上,不是网络连接就是重装失败,于是决定放弃装OneDrive。

WindowsPC端iCloud

基本上可以说是最理想的方案了吧,Obsidian是写了之后自动保存的,只要我在MacBook上写好笔记什么操作都可以不用管就直接同步到iCloud了,然后只要回到家打开电脑,WindowsPC端的iCloud就会自动启动,自然就同步到我的电脑了。

但是吧,Win端iCloud是一个让人极其难受的软件,这东西用过的人都知道有多难用,同步各种报错,上传下载速度还慢,这些问题随手一搜应该就能搜到。

而我自己曾经在Win端iCloud上遇到过一个非常逆天的问题。

我在iPad上用Pages编辑文稿,文件默认保存在iCloud。因为iPad打字不方便,我想在Windows端打开继续编辑。结果就遇到了文件版本冲突问题,iPad上的旧版本一直在上传同步,导致我在电脑上刚编辑几个字,文件就被旧版本覆盖了。

折腾半天后我放弃了,直接在iPad上新建文件写完了。

然而更逆天的是,工作结束后我去睡觉了。第二天打开电脑上的iCloud,发现它显示同步了一万多个文件,但我的iCloud里实际文件数量根本没变,合理怀疑是两个冲突文件在相互抢上传,谁也没有覆盖过谁,外加文件大小并不大所以才看到它们俩一直在不停上传。

之后我直接卸载了Windows版iCloud,再也没装回来。正如某位网友所说,Win端iCloud最大的意义就是逼用户买Mac吧,我反正就是在遇到这个问题后不久买了我的第一台MacBook…

Remotely Save插件

接下来就是我找到的终极方案——Obsidian的Remotely Save插件。

特别鸣谢本文的最大帮手:Gemini老师。我把我的需求告诉基米老师之后,基米老师给我推荐了Remotely Save插件。Obsidian的插件生态很成熟这件事我是知道的,但是我一直秉持着实用主义的思想,先摸透Obsidian的基础功能,别的功能用到什么装什么。所以Remotely Save插件是我在Obsidian上装的第一个插件。

装好这个插件之后我才明白什么叫做“自动化”。在配置好之后,我只要打开Mac/iPad/WindowsPC端中任意一个平台的Obsidian,我所有的笔记文件就会同步到我的NAS上,同时我的Mac/iPad/WindowsPC端Obsidian也会读取NAS中的笔记文件从而实现跨平台同步。

简单介绍一下这个方案的实现过程

折腾过程

这个方法的核心思路是把NAS作为读取文件的中转站,不论打开哪个平台的Obsidian,这个插件要做的事就是比较该平台上的笔记文件和你NAS中文件的区别,并同步成一致的文件。

前置条件

  1. 你的NAS要支持WebDAV协议,并开启该服务。我使用的是飞牛NAS,需要在系统设置中打开WebDAV服务。其他NAS设置应该也类似。 图片描述
  2. 在iCloud、NAS和WindowsPC中各自新建一个专门的文件夹专门用来存放笔记。请确保你的NAS对这个在NAS上新建的文件夹有读写权限。
  3. 设置好之后记录好自己的NAS地址,比如你是在NAS的根目录新建了一个叫Obsidian的文件夹,那么格式是http://NAS的IP地址:5005/Obsidianhttps://NAS的IP地址:5006/Obsidian

Mac/iPad端设置

如果你的笔记和我一样,是存放在iCloud中的话,那么只用在其中一个平台上设置即可,因为iCloud会同步仓库设置。

  1. 安装插件:
    • 设置 -> 第三方插件 -> 关闭安全模式 图片描述
    • 浏览 -> 搜索 Remotely Save -> 安装并启用。 图片描述
  2. 配置
    • 我上面这张图是已经安装好Remotely Save的界面,点击下方Remotely Save插件旁边的螺母图标,进入设置界面。
    • 选择远程服务一栏的下拉菜单中选择Webdav。
    • 在服务器地址一栏中填入前面记录过的NAS的地址。用户名和密码是访问你的NAS的用户名和密码。其他保持默认即可。 图片描述
    • 点击下方测试可否连接,如果连接成功,说明以上设置没问题。
  3. 同步设置
    • 下方有各种同步设置,可按自己的需求设置,我自己设置了启动后自动运行一次图片描述
  4. 同步:由于我刚刚设置了启动后同步,可以退出之后重新打开Obsidian,此时可以观察到右下角有同步进程,时间取决你的笔记文件多少。当显示同步成功字样,此时可以打开NAS检查一下笔记文件有没有全部同步到NAS 图片描述

WindowsPC端设置

  1. 在WindowsPC上任意本地位置新建一个文件夹,建议和iCloud上的文件夹名称相同。
  2. 打开Windows端的Obsidian,选择打开本地仓库,指向刚才新建的空文件夹。
  3. 设置方法和在Mac端设置方法完全一致。

日常使用

你的笔记实际上有了 3 份:iCloud(Mac/iPad 使用)、NAS(中转库)、Windows 硬盘(本地库)。 现在,你的跨端工作流变成了这样极其优雅的姿势:

从 Mac 转移到 Windows

  1. 在公司 Mac 上写完笔记,自动保存在 iCloud。
  2. 回到家,拿出 iPad,解锁,打开 Obsidian。
    • 原理:iPad 先通过 iCloud 拉取 Mac 写的新笔记,接着 Remotely Save 插件触发,自动将新内容推送到 NAS。
  3. 等待几秒同步成功后,放下 iPad,打开 Windows 电脑的 Obsidian。
    • 原理:Windows 端插件启动,从 NAS 拉取刚才 iPad 传上去的内容。
  4. 开始在 Windows 上愉快码字。

从 Windows 转移到 Mac

  1. 在 Windows 上编辑完,关闭 Obsidian(或手动点一下同步按钮)。
    • 原理:内容存入 NAS。
  2. 拿起 iPad,解锁,打开 Obsidian。
    • 原理:iPad 从 NAS 拉取 Windows 的修改,随后 iOS 系统的机制会自动将其推送到 iCloud。
  3. 第二天到公司打开 Mac,iCloud 自动同步完成,直接接着写!

避坑提醒

  1. 其实还有一种方案,就是把NAS利用SMB或者网络驱动器映射挂载到本地电脑上,然后只同步到NAS之后直接用Obsidian访问NAS上的笔记文件。Gemini老师是这么说的:

答案是:理论上可行,但强烈不推荐。 虽然把你 NAS 的文件夹映射成 Windows 的 Z: 盘,然后直接用 Obsidian 打开 Z:\Obsidian_Backup 看起来很省事,但这样做有三个致命缺点

卡顿(性能杀手):

  • Obsidian 的原理是基于大量小文件(Markdown)的。每次打开软件,它都要扫描整个库来建立索引、双链和标签。

  • 通过网络(SMB/WebDAV 挂载)读取成千上万个小文件,哪怕是在局域网,速度也远不如本地 SSD。你会发现启动变慢、搜索变慢、打字偶尔会有延迟

数据风险:

  • 如果你网络稍微波动一下,或者 NAS 休眠了,你正在写的内容可能保存失败。

  • Remotely Save 插件在同步时会生成一个专门的 .json 数据文件来记录版本。如果你直接在 NAS 上改文件(挂载模式),而 iPad 是通过 WebDAV 插件模式去同步,两者的交互逻辑不一致,非常容易搞乱那个同步记录文件,导致 iPad 端报错。

失去本地备份:

如果你用插件同步到 Windows 本地硬盘(D:\MyNotes),相当于你有了三份数据(iPad 一份、NAS 一份、Windows 一份)。

如果你直接挂载 NAS 用,万一 NAS 硬盘坏了,Windows 端是什么都没有的。 结论:请务必在 Windows 端也安装 Remotely Save 插件。 让 Windows 读写本地硬盘(速度快、稳定),然后由插件在后台默默把变化推送到 NAS。不要为了省那 2 分钟配置时间而牺牲长期的流畅度。

  1. Obsidian 的设置是跟着单个“仓库(Vault)”走的。我的笔记分了很多类(游戏攻略和读书笔记放一起太违和了)。为了只配置一次同步,我采用的是“母子仓库”方案:把所有分类文件夹放在一个大文件夹(母仓库)下,同步设置只在母仓库里做。不过需要注意的是,如果你平时只用 Obsidian 打开“子仓库”去写笔记,Remotely Save 插件是不会生效的。你需要每次写完后,退出来用 Obsidian 打开一次“母仓库”,才能触发同步。虽然有点绕,但能统一管理设置。
  2. 即使这种方案可以做到自动同步,但是因为我只设置了启动时自动同步,所以每次都需要在回家之后打开一次iPad上的Obsidian,所以可以配合iPad的快捷指令,设置在连接到家中Wi-Fi的时候或者某个时间自动打开Obsidian。
  3. …暂时没了,后面再遇到什么问题的时候再说吧。