Obsidian + Git部署——Win-Android多端同步
前言
Obsidian是个非常棒的Markdown阅读和编辑器,卡片笔记的机制被其发挥的相当充分。但是缺点是不直接支持多端同步,需要购买官方的服务。所幸数据是开放的,可以用其他第三方服务来支持同步。这里用Git来作为同步数据的工具。
我常用的设备主要是办公的和家里的Windows PC,以及一部Android手机,可用的数据同步的方式主要有:
- 用OneDrive等网盘来直接同步文件夹
- 用Git等SCM建仓库来同步
一般来说,网盘是比较合适的方式,方便快捷。但是我比较不想用第三方的云服务,总感觉数据不放在自己手里不是很靠谱;而且网盘也通常缺乏版本回滚机制,有也效果一般;同时我自己也已经有Gogs可以用来托管自己的仓库,正好就用上了。
工具准备
云端Gogs建仓库不必多说,这个想法需要解决的问题是使用终端的数据同步方式。
Obsidian PC端的社区已经发展了非常久,基本各种各样的插件都可以找到。在官方推出Sync服务之前,就已经有Obsidian Git这个插件在了。这里直接使用这个插件来进行数据同步。当然也可以选择用Source Tree,或者甚至命令行手动管理仓库同步。
到Android这边,Obsidian Git插件作者不想在插件里打包一份Git,所以很可惜,不能直接用插件了。这里使用Termux来操作Git同步仓库内容。
下面来一步步进行操作。
Git仓库建立
可以用Gogs或者其他方式创建一个Git仓库。
建议是先在仓库里添加一个.gitignore,忽略掉.obsidian和.trash 两个目录的同步。这两个目录是跟当前工作区状态相关的,多端用Git管理容易产生冲突,导致同步失败。
1 | |
如果想要同步一些工作区状态,可以选择具体到.obsidian里屏蔽掉几个跟本地状态相关性较强的数据文件和文件夹,留下变动较小的json。
1 | |
Obsidian Git插件
Obsidian自带了社区插件浏览器,安装起来非常方便。
- 打开Obsidian,
设置→第三方插件→安全模式关闭安全模式。 - 关闭安全模式后,可以在此处看到
社区插件项目,进入搜索下载Obsidian Git,并启用。 - 在
设置→Obsidian Git中设置Git自动备份间隔等。
设置好后,本地拉好仓库,用Obsidian打开仓库文件夹就可以了。可以尝试做一些修改,观察右上角的提示来确认插件的运行状态。
Termux管理Android Git
Termux是Android上的一个非常好用的linux终端工具,可以在Google Play商店上直接下载。
在Android的文件管理中找好要放置仓库的地方,建立文件夹,并给Termux这个文件夹的访问权限。高版本的Android对于权限的控制愈发严苛,尽量把目录放置在一些权限不敏感的地方。
1. 进入Termux,用apt装好git。
1 | |
2. 进入仓库文件夹,Git拉取仓库。
完成后即可回到Obsidian打开仓库目录开始使用。Android上使用终端输指令总归有些麻烦,可以把常用的git命令写两个shell脚本,方便每次使用。
3. 编写pl.sh和pu.sh
pl.sh
1
2
3
4
5
6#!/bin/bash
cd /path_to_vault
git stash
git pull
git stash poppu.sh
1
2
3
4
5
6
7
8
9#!/bin/bash
cd /path_to_vault
git stash
git pull
git stash pop
git add .
git commit -m "commited from mobile"
git push保存赋权后每次同步直接手动调用一次即可。