一种 Obsidian vault 自动备份方法
4 min read

一种 Obsidian vault 自动备份方法

介绍一种基于 Git 和 Github Private Repo 自动备份 Obsidian vault 的方法
一种 Obsidian vault 自动备份方法
Photo by Alex Cheung / Unsplash

Obsidian 笔记仓库的单元被称为 vault,官方提供了很多的备份的方法,包括:

  • 利用 dropbox,iCloud,obsidian sync 之类的云服务
  • 自建备份服务

云服务相对比较简单,只要在创建 Obsidia vault 指定到云服务的指定路径即可。这里我想介绍一种基于 Git 和 Github Private Repo 的自动备份方法。在使用这篇文章介绍的方法之前有几个前提假设:

  • 了解 git 配置,包括 .gitconfig 配置文件的修改、常用的 git 命令
  • 了解 ssh 配置,包括 .ssh/config 配置文件配置对应域名的公私钥
  • 了解 github 配置,包括建立 private repo、配置 ssh 方式访问

以上对于程序员是基础技能,不过不要担心如果你不了解,在 Reference 中我会附上几个比较实用的链接,基本上碰到的问题都能解决,当然善用搜索引擎也是好办法之一。

准备

新建 Github Private Repo

在 Github 中新建自己的 Repo,需要注意的是将 Repo 设置成 Private。

Github new private repo

Github SSH 配置

先在本地生成 ssh key,具体方法参考这个:Generating a new SSH key and adding it to the ssh-agent - GitHub Docs

然后将生成的 ssh key 添加到 Github 账户中,具体方法参考这个:Adding a new SSH key to your GitHub account - GitHub Docs

Git SSH 配置

为本地 Git 配置上一步骤设置的 SSH key,具体是两个配置文件添加下述配置:

  1. ~/.gitconfig
[user]
	email = "your email"
	name = "your name"
# 下面按需配置
[commit]
	gpgsign = true
[alias]
	logs = log --show-signature
	cis = commit -S
[gpg]
	program = /usr/local/bin/gpg
[core]
	editor = vim
	quotePath = false
  1. ~/.ssh/config
Host github.com
	HostName github.com
	User git
	IdentityFile ~/.ssh/id_rsa_ob
	IdentitiesOnly yes

Obsidia vault 配置

在终端进行命令行操作,在 Obsidian 的 open another vault 中可以看到 vault 目录,进入 vault 所在的目录,例如:

cd /Users/edonymurphy/Library/Mobile Documents/iCloud~md~obsidian/Documents/anthelion/

Git 初始化

进入 vault 目录之后,将该 vault 初始化为 Git Repo:

cd /Users/edonymurphy/Library/Mobile Documents/iCloud~md~obsidian/Documents/anthelion/
git init

关联 Github Private Repo

初始化 Git Repo 完成之后,需要将之前建立的 Github Private Repo 进行关联:

git add remote git@github.com/{your-name}/{private-repo-name}.git

上述 git ssh url 可以在 Github Repo 的 Web 页面上找到:

Github repo SSH URL

关联本地分支

添加远程分支之后,vault 跟 Github Repo 就关联上了,这个时候可以进行分支关联:

git add .
git commit -s "init commit"
git push -u origin master

Obsidian git 配置

插件安装

在 Obsidian 中安装插件 Obsidian Git,如下图所示:

Obsidian Git Plugin

插件配置

按照自己的需要进行备份周期之类的配置,可以参考 Obsidian Git 的配置面板:

Obsidian Config Panel

这是我在用的 Obsidian Git 的配置文件(仅供参考):

{
  "commitMessage": "anthelion vault backup: {{date}}",
  "autoCommitMessage": "anthelion vault backup: {{date}}",
  "commitDateFormat": "YYYY-MM-DD HH:mm:ss",
  "autoSaveInterval": 0,
  "autoPushInterval": 0,
  "autoPullInterval": 0,
  "autoPullOnBoot": false,
  "disablePush": false,
  "pullBeforePush": true,
  "disablePopups": false,
  "listChangedFilesInMessageBody": true,
  "showStatusBar": true,
  "updateSubmodules": false,
  "syncMethod": "merge",
  "customMessageOnAutoBackup": false,
  "autoBackupAfterFileChange": false,
  "treeStructure": false,
  "refreshSourceControl": true,
  "basePath": "",
  "differentIntervalCommitAndPush": false,
  "changedFilesInStatusBar": true,
  "username": "",
  "showedMobileNotice": true
}

总结

以上基于 Github 的 Obsidian 自动备份方法就配置好了,关于数据备份和安全有几点我想说:

  • 不要完全依赖某一个备份服务,多几个备份总会稳妥(热备份、冷备份都用上是最好的),例如 Git + Dropbox,Obsidian Sync + Git 等
  • Github Repo 虽然是 Private Repo 但还是有被人看到的风险,所以私密的东西,如 key、token 这类的最好还是不要往 Github 传
  • 搭建 NAS 确实是个不错的方法,但是使用成本和维护成本对个人确实比较高,看你有没有人力、物力去折腾

References

  1. How I Put My Mind Under Version Control
  2. Generating a new SSH key and adding it to the ssh-agent - GitHub Docs
  3. Adding a new SSH key to your GitHub account - GitHub Docs
足迹