一種 Obsidian vault 自動備份方法

語言: CN / TW / HK

Obsidian 筆記倉庫的單元被稱為 vault,官方提供了很多的備份的方法,包括:

  • 利用 dropbox,iCloud,obsidian sync 之類的雲服務
  • 自建備份服務

雲服務相對比較簡單,只要在建立 Obsidia vault 指定到雲服務的指定路徑即可。這裡我想介紹一種基於 Git 和 Github Private Repo 的自動備份方法。在使用這篇文章介紹的方法之前有幾個前提假設:

.gitconfig
.ssh/config

以上對於程式設計師是基礎技能,不過不要擔心如果你不瞭解,在 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 <a href="/cdn-cgi/l/email-protection" data-cfemail="5a3d332e1a3d332e322f3874393537">[email protected]</a>/{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