最近开始使用 Logseq 了,在使用了一段时间之后,我感觉 Logseq 的数据可以算是我不可分割的一部分,于是决定时刻保存一份它的备份。Logseq 本身支持使用 git 备份,也支持付费后在官方提供的云服务中备份,但是处于隐私和价格的考虑,加之我现在已经有一套 NAS+LinuxServer 的 HomeLab 架构,所以复用这一套现有的基础架构是一个比较经济的方案。
Logseq 的数据库其实就是一个文件夹,在 MacOS,它位于 ~/.logseq_graph,或者也可以在 logseq 左上角的 All Graphs 界面里看到。还有一个需要备份的文件夹在 ~/.logseq,它是 logseq 自身的配置文件、插件和一些缓存。
接下来就是寻找一个把本地的 logseq 目录备份到 NAS 上的程序。Syncthing 是一个很好的选择,而且可以使用它的 docker 版本来快速搭建一个Syncthing服务器。
我们的网络结构是这样的:
┌──────────────────────────────────────────────────────┐
│ │
│ ┌───────┐ NFS ┌────────────┐ SyncT ┌───────┐ │
│ │ NAS ├─────────┤ Linux Host ├─────────│ MacOS │ │
│ └───────┘ └────────────┘ └───────┘ │
│ │
└──────────────────────────────────────────────────────┘
在 Linux Host 上用 AutoFS 这个工具,把 NAS 上的目录映射到 Linux Host 上。然后在 Linux Host 上用 docker-compose 起一个 Syncthing 服务:
services:
syncthing:
image: lscr.io/linuxserver/syncthing:latest
container_name: syncthing
hostname: deb-syncthing #optional
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- ./data/config:/config
- /mnt/syncthing:/data1
ports:
- 8384:8384
- 22000:22000/tcp
- 22000:22000/udp
- 21027:21027/udp
restart: unless-stopped
接下来在 MacOS 上配置一下 Syncthing,同步上述的两个目录到 Syncthing 服务端去,就可以实现无缝备份了。