Gitee+Minio双保险完成Obsidian的备份和多端同步
使用 Git 代码仓库服务来保存笔记我认为是最安全的方式之一,一旦出现问题就可以回滚笔记。
但是移动端对于 git 的操作支持并不好,如果想在移动端看或者修改笔记那么 PC+移动端的同步又成了问题。还好有插件可以解决这个问题,比如remotely-save ,它支持很服务,其中最简单的方式就是使用OneDrive
,直接按照插件官网的说明登录OneDrive
进行授权即可。
其次使用Webdav
,国内的话首选就是坚果云
了,配置也很简单。但是经过我长时间的使用,我发现这两种方式并不稳定,多端使用一段时间后,同步有的时候 会丢失文件或者同步不准确或者鉴权失败等。不知道具体是插件的问题还是云服务的问题。后来我自建了 S3 服务,使用 Minio,作为同步的服务,使用一段时间发现很稳定!所以把这一套双保险分享一下!
PC 端的 Git 服务
首先你需要新建一个 Git 仓库,你可以使用 Github、Gitlab、Gitee 都可以,我选择了 Gitee 速度比较快。 然后就需要配置下 ssh 免登录认证,如果你有多台 PC 那么每一台都需要配置。
本地生成秘钥,其中 email 为登录 Gitee 的邮箱。
ssh-keygen -t rsa -C email
然后在家目录下的.ssh(这是个隐藏文件夹) 下就会生成两个文件 id_rsa
、id_rsa.pub
复制 id_rsa.pub 文件内容,登录 Gitee,点击用户头像 → 账号设置 →SSH 公钥 ( 🔑 点击我新建 ssh key ) 填写标题,及将上面复制的内容粘贴到公钥中。确定即可。
回到本地客户端,测试一下,出现如下提示表示配置成功!
ssh -T git@gitee.com
Hi lichlaughing! You've successfully authenticated, but GITEE.COM does not provide shell access.
回到 Gitee 新建一个项目,用来备份我们的笔记文件。
来到我们笔记的根目录下,将我们的笔记和 Gitee 的仓库进行关联。 首先配置下 Git 的用户信息
# 提交的用户名
git config user.name lichlaughing
# 用户名的邮箱,使用gitee的登录邮箱即可
git config user.email xxx@qq.com
然后关联 gitee 仓库 依次执行如下命令:
git init
git commit -m "first commit"
git remote add origin https://gitee.com/lichenghao/ob_bak.git
git push -u origin "master"
然后在 Obsidian 中下载obsidian-git插件。设置为 5 分钟同步一次即可,更多配置见配置文档。
这样 PC 端的配置就完成了,如果在另外一台 PC 上想要同步笔记,首先也需要做上面的 Git SSH 的配置,然后克隆代码,再用 Obsidian 打开即可。但是需要注意,尤其是不同操作系统 PC 之间的同步问题,建议取消掉文件.obsidian
文件夹的同步,因为很容易冲突,你可以使用.ignore
文件来忽略文件。
我建议只有主力机器使用 Git 插件,作为备份的结点,其他机器包括移动端使用remotely-save 插件,也就是接下来要说的内容。
PC+移动端的 S3 服务
首先你需要选择一个对象存储服务。可以选择各大云服务厂商提供的对象存储服务。例如:阿里云 OSS 服务等,如果你有一台服务,那么你就可以自建服务,比如我使用 Minio 实现 S3 服务。
这里以 Centos7 为例:
首先你需要在服务器上安装 Docker 和 Docker Compose 服务。参考官方安装文档# Install Docker Engine on CentOS
然后编辑 docker-compose.yml
文件,内容如下:
services:
minio:
image: minio/minio:RELEASE.2024-04-06T05-26-02Z.fips
hostname: minio
ports:
- '9000:9000' # API端口
- '9001:9001' # 管理控制台端口
environment:
MINIO_ROOT_USER: admin # 管理员用户
MINIO_ROOT_PASSWORD: 12345678 # 管理员密码,建议修改
volumes:
- /opt/minio/data:/data # 数据卷映射,建议修改 /opt/minio/data
- /opt/minio/config:/root/.minio/ # 配置目录映射,建议修改 /opt/minio/config
command: server --console-address ":9001" /data # 启动命令
privileged: true
restart: always
networks:
- my_network
networks:
my_network:
external: true
其中注释包含建议修改
的需要根据自己的情况修改。
然后启动即可,重启也可以使用这个命令。
docker compose up -d
接下来需要云服务器放行端口,9000
、9001
然后访问:http://ip:9001 访问控制台。 接下来需要新建存储桶和访问秘钥对。在如下导航中分别新建桶和 Access Keys 即可。
回到 Obsidian 中安装插件,remotely-save,安装完毕后,修改配置:
从上到下依次修改:
- 服务类型为:S3
- 服务地址:配置的 Minio Api 地址,默认为:http://ip:9001
- Acess Key 和 secret
- 存储桶的名称
- S3 URL Style:配置为
Path-Style
- 下面还有一项配置自动运行 5 分钟同步一次。
- 更多配置见插件文档
那么该插件就配置完毕了,其他需要同步的 PC 或者移动端只需要再次配置一次该插件的信息即可。
最终的效果:
- 主力 PC 使用 Git 备份笔记,同时使用 remotely-save(s3)服务来同步其他 PC 和移动端的修改。
- 其他 PC 和移动端使用 remotely-save(s3)服务来同步笔记的修改。
- 这样笔记相当于在 Git 和 Minio 都 备份了一份,如果同步出现问题,只需要在 Minio 中新建一个桶,重新同步即可。
- 这个方式我使用了几个月了,目前没有发现问题。