obsidian 多端同步 - git

104 阅读3分钟

obsidian 多端同步 - git

obsidian 多端同步 - git

目前 obsidian 在用 livesync 做同步,但是还是不够丝滑,上次 Richard 留言说 git 很好使,我 git 服务都是现成的,就手机段 termux 没有环境,今天我也来折腾下,搞不好打开新世界。

obsidian 多端同步 - git

我的同步场景

同步节点

  • 服务端:NAS
  • 客户端:PC
  • 客户端:手机
  • 客户端:Chrome 浏览器(弱需求)

同步需求

  1. 手机随时记录闪念,服务端能自动同步;
  2. PC 新增/更新笔记,服务端能自动同步;
  3. 手机和 PC 有冲突时能提示解决;
  4. 同步数据要求支持端到端加密,保证数据安全;
  5. 同步服务能稳定运行,不能占用手机太多资源

git 服务器

git 服务器可以使用 github,gitlab,gitee,也可以自己搭建。 我使用轻量级的 gogs,感兴趣的可自己体验下 try-gogs,真的很简洁

安装 gogs

# 数据存储目录
mkdir -p /mnt/mind/data/gogs

# 执行
docker run -d --name=gogs -p 16656:16656 -p 3000:3000 -v /mnt/mind/data/gogs:/data gogs/gogs:latest

然后就可以打开 http://localhost:3000 新增仓库了

pc 端

  1. 首先,pc 要有 git 环境,obsidian 的 vault 是存储在 git 服务器的目录的,即本地有个隐藏的.git 目录
  2. obsidian 中安装 git 插件,配置每 5 分钟自动同步一次

rsync+git同步数据 image 20250304

rsync+git同步数据 image 20250304

手机端

准备工作

  1. 安装 ssh 客户端:pkg install openssh
  2. 安装 git:pkg install git
  3. sshkey 生成: ssh-keygen
  4. 在 git 服务器,添加手机端的 sshkey,这样手机端就能免密登录提交代码了。

rsync+git同步数据 image 20250304 2

rsync+git同步数据 image 20250304 2

工作流程

  1. 打开 termux: 执行获取更新:sh pull.sh
  2. 在 obsidian 中,手动修改笔记,上传图片之类操作
  3. 执行 push.sh

示例

使用 pull 更新笔记后,在当前笔记上传下图,然后调用 push.sh 提交

rsync+git同步数据 Screenshot 20250304 220930 com 20250304

rsync+git同步数据 Screenshot 20250304 220930 com 20250304

获取更新

vim pull.sh chmod a+x pull.sh

#!/data/data/com.termux/files/usr/bin/sh
# 目录设置在:1/gogs/kbase

# 手机端:丢弃本地修改,使用git服务端最新提交覆盖
cd /data/data/com.termux/files/home/storage/shared/1/gogs/kbase && git fetch origin && git reset --hard origin/main && git clean -fd

提交修改

vim push.sh chmod a+x push.sh

#!/data/data/com.termux/files/usr/bin/sh

# 手机端:提交修改
cd /data/data/com.termux/files/home/storage/shared/1/gogs/kbase && git add . && git commit -am'update by android' && git push origin master

脚本执行入口

安装 termux-widgt 插件,可提供 UI 执行 pull 和 push

# 前台程序
mkdir -p /data/data/com.termux/files/home/.shortcuts
chmod 700 -R /data/data/com.termux/files/home/.shortcuts

# 后台程序
mkdir -p /data/data/com.termux/files/home/.shortcuts/tasks
chmod 700 -R /data/data/com.termux/files/home/.shortcuts/tasks

# 将上面的pull.sh和push.sh复制到shortcuts目录
cp /data/data/com.termux/files/home/storage/shared/1/termux/*.sh  /data/data/com.termux/files/home/.shortcuts

由于我需要修改,所以自己手动更新 如果手机端是只读,可以配置 crontab 执行每 5 分钟更新一次。

📌 总结 本文介绍了 obsidian 的 git 来实现多端同步,这个方案仅适合程序员,有点门槛。 但是 git 是最可靠的版本控制和协作服务,linux 操作系统那么复杂庞大的源码都是用 git 协作开发,咱这点笔记共享编辑编辑,不在话下。

本文使用 markdown.com.cn 排版