article_image

Obsidian 已经成为许多人的首选笔记应用,但如何在多个设备上同步你的 Obsidian 仓库,仍然是一个问题。

先前写了一篇《Obsidian 的 PC 端同步方案,无代码搞定 Git 同步》,介绍了如何给 Obsidian 添加 Git 同步功能。如果你还没有看过这篇文章,建议先去看一下这篇文章,在 PC 端完成基础配置。

准备工作

在开始本文之前,你需要做一些准备工作:

  • 一个已备份到 GitHub 仓库的现有 Obsidian 仓库。(参考此文
  • 一个安装了 Obsidian、Working Copy 和 Shortcuts 的 iPhone 或 iPad。

🔗 Obsidian - App Store 下载

🔗 Shortcuts - App Store 下载

需要注意的是,这篇教程中的方法并不是完全免费的,主要借助了 Working Copy 的功能,这是一个功能强大的 Git 客户端。目前它需要一次性付费 24.99 美元,才能解锁 Push 推送这样的关键性功能,否则只能进行 Pull 单向拉取操作。

🔗 Working Copy - App Store 下载

选择它也是有理由的,它支持了我们所需要的 clone、push、pull、fetch 等大多数常见操作,并且支持 Shortcuts 实现自动化、支持将 Git 仓库映射到 Obsidian 目录下。这为我们实现全流程自动化提供了方便。

关键操作步骤

连接本地 Obsidian vault 到 GitHub 仓库

  1. 创建新的 Obsidian vault:首先,在你的 iPhone/iPad 上打开 Obsidian 应用。选择“Create new vault”,为你的 vault 起一个名字,然后点击“创建”。(不要勾选 Store in iCloud)

创建新 Vault
创建新 Vault
  1. 使用 Working Copy 连接到 GitHub:打开 Working Copy 应用,点击侧边栏的“+”图标,选择“Clone repository”。然后需要登录你的 GitHub 账号,然后选择你的 Obsidian vault 仓库进行克隆。

注 1:如果你用的不是 Github,这一步需要手动配置 Git URL 来添加仓库。

注 2:如果你的仓库较大,首次 Clone 可能需要耗费较长的时间。


Clone 仓库到手机
Clone 仓库到手机
  1. 链接仓库到文件夹:在 Working Copy 中,点开仓库,点击上方的 Statue and Configuration,点击仓库名称,选择 Link Repository to Folder。在“我的 iPhone”中,打开“Obsidian”目录,然后选择你刚刚创建的新 vault 文件夹。

注:在 iPad上,这一步在右上角的分享按钮,点击分享按钮后可以看到 Link Repository to Folder 按钮。


链接仓库到文件夹
链接仓库到文件夹
  1. 验证文件:返回 Obsidian 应用,你会发现 Github 中的 Vault 现在正常出现在了 Obsidian App 中。

两边应该能正确显示仓库
两边应该能正确显示仓库

这里可能产生一个小问题,由于“新建 Obsidian vault”这一步已经创建了一个默认的 .obsidian 目录。在 Clone 你原本的仓库时,会出现 app.jsonapp.json-2 这样两组文件,这些文件包含 Obsidian 的界面配置等信息,如果同步了错误的数据,你会发现电脑端原本的配置会丢失(实际上可能被存储到了 app.json-2 中)。

由于在 Obsidian 中是不显示 .obsidian 目录的。为了解决这个小问题,你需要在 Working Copy 中手动合并这两个文件再提交。所以就有了第 5 步。

  1. 解决文件冲突:在 Working Copy 中打开 .obsidian 文件夹,检查是否存在重复的文件,例如 app.jsonapp.json-2。通过编辑器手动把它们合并到一个文件,删除另一个,然后再进行 Push 操作即可。

到这一步为止,你已经完成了仓库的同步,只不过上传和下载都是手动的。需要在 Working Copy App 中点击 Pull 和 Push 来完成拉取和推送操作。

实现自动化上传和下载

接下来我们要利用 Shortcuts 实现自动拉取和推送功能。

在理想情况下,我们需要实现两个自动化动作:

  1. 在点开 Obsidian 时,拉取最新的 Github 仓库到本地。
  2. 在关闭 Obsidian 时,推送本地数据到 Github 仓库。

分别实现自动推送和拉取
分别实现自动推送和拉取

上图展示了最终成品 Shortcuts,以下是详细操作步骤。

拉取 GitHub 拉取到本地

操作步骤:

  1. 创建一个拉取的Shortcuts:打开 Shortcuts 应用,点击“+”创建一个新的 Shortcuts。为其命名为“拉取 Obsidian”。
  2. 添加拉取仓库操作:搜索 Working Copy 的“Pull form”操作并添加到你的 Shortcuts 中,并选择你的仓库。
  3. 自动化拉取更改:在 Shortcuts 应用中,打开“自动化”页面,创建一个新的个人自动化。选择“打开应用”作为触发器,选择“Obsidian”应用,并确保“打开时”已勾选。然后添加一个“运行Shortcuts”的操作,并选择你刚刚创建的“拉取 Obsidian”的Shortcuts。

新增拉取自动化
新增拉取自动化

推送本地数据到 GitHub

注意推送的 Shortcuts 中,需要添加 Commit 和 Push 两个操作。内容可以自定义,比如和 Obsidian Git 的默认格式保持一致。

操作步骤:

  1. 创建一个推送更改的 Shortcuts:在 Shortcuts 应用中,再次点击“+”创建一个新的Shortcuts。为其命名为“备份 Obsidian”。
  2. 添加提交和推送仓库操作:搜索 Working Copy 的“Commit”和“Push”操作并按顺序添加到你的 Shortcuts 中。
  3. 自动化推送更改:再次打开“自动化”页面,创建自动化。选择“关闭 Obsidian”作为触发器。然后添加一个“运行 Shortcuts”的操作,并选择你刚刚创建的“推送 Obsidian”的 Shortcuts。

完成以上步骤后,每次你在 iPhone 或 iPad 上打开或关闭 Obsidian 应用时,都会自动从 GitHub 拉取或推送更改,这样你的笔记就能够始终保持同步。


新增推送自动化
新增推送自动化

免费替代方案

这篇文章花了很长的时间研究,我为了实现一个尽量免费的方案,也尝试了很多种不同的同步方案,比如通过 WebDAV、SMB 等协议进行同步;通过 iCloud + Git 定时同步;通过 iCloud Drive + Mac 端定时任务同步等等。但都因为某些原因放弃了:要么会搞乱电脑端的设置,要么需要等待同步,要么难以手动触发。同步的效果和体验都不是很好。

但还是有一些值得一提的免费替代方案的。

替代方案之 Obsidian Git

最佳的免费替代方案是 Obsidian Git 插件,它在 2022 年 9 月的更新中提供了 Obsidian 手机版本,对小型仓库和 Android 用户而言是一个很好的替代方案。首次同步会比较耗时,后续的 Pull 和 Push 操作都非常快。

我自己尝试之后发现,我的 Vault 对于这个插件似乎有些过大,我的设备是 iPhone 12 Pro Max,首次同步时就会出现应用闪退导致无法同步的情况。官方也表示这是由于设备和内存限制导致的,Vault 的大小会有所限制(关于移动端性能的说明)。而 Working Copy 则没有出现这个问题。

作为参考,我目前 Obsidian Vault 的文件夹大小在 1.93 GB、3588 个文件。在 Working Copy 中显示仓库占用 843.3 MB。


作为参考,这是我目前 Obsidian Vault 的大小
作为参考,这是我目前 Obsidian Vault 的大小

额外提醒

如果你在 PC 端已经安装了 Obsidian Git 插件,那么每次点开 iOS 版 Obsidian 可能会弹出一个来自插件的无法同步提醒。你可以在 iOS 的插件设置中,打开“Disable on this device”选项来禁用它。


不在此设备上使用
不在此设备上使用

关于 Android 同步方案

关于 Android 通过 Git 同步的方案,我也还在学习中。目前我找到的是 Obsidian 社区中的这篇《通过 Termux 终端实现 Git 同步》教程,结合 Tasker 可以实现定时同步。

Android 也有一些非 Git 的同步方案,较常见的方案是使用 DropsyncFolderSync 这样的同步工具,借助 OneDrive、Dropbox 来同步数据,这是可行的。

但走云服务与 Git 同步的方法有较大差异,遇到的问题也不尽相同。通常会遇到启用了“按需同步”导致的文件重复和文件丢失问题,这些是新的话题,本文暂时不做展开。

小结

Working Copy 确实称不上便宜,不过一次性付费总还是比周期性订阅便宜一些。而且最终实现的效果,确实是目前通过 Git 同步到手机端的方案中最方便最流畅的一个。

综合考虑后,我还是认为,Working Copy 是目前我最推荐的 Obsidian 的手机端同步方案。

本文要特别感谢 Megan Sullivan 在她的博客上分享的文章:《Sync your Obsidian Vault on iOS with GitHub, Working Copy, and Apple Shortcuts | Megan Sullivan》,此文中提供了非常详尽的 iPad 版本图文介绍,对本文帮助很大。如果你对具体操作有不熟悉的地方,推荐你参考这篇文章中的截图逐步操作。


author_avatar

#UNTAG Developer