跳到主要内容

Gitee+Minio双保险完成Obsidian的备份和多端同步

· 阅读需 5 分钟
故事的程��序猿👨🏻‍💻
一个后端打酱油程序猿

使用 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_rsaid_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

接下来需要云服务器放行端口,90009001

然后访问:http://ip:9001 访问控制台。 接下来需要新建存储桶和访问秘钥对。在如下导航中分别新建桶和 Access Keys 即可。

回到 Obsidian 中安装插件,remotely-save,安装完毕后,修改配置:

从上到下依次修改:

  1. 服务类型为:S3
  2. 服务地址:配置的 Minio Api 地址,默认为:http://ip:9001
  3. Acess Key 和 secret
  4. 存储桶的名称
  5. S3 URL Style:配置为 Path-Style
  6. 下面还有一项配置自动运行 5 分钟同步一次。
  7. 更多配置见插件文档

那么该插件就配置完毕了,其他需要同步的 PC 或者移动端只需要再次配置一次该插件的信息即可。

最终的效果:

  1. 主力 PC 使用 Git 备份笔记,同时使用 remotely-save (s3) 服务来同步其他 PC 和移动端的修改。
  2. 其他 PC 和移动端使用 remotely-save (s3) 服务来同步笔记的修改。
  3. 这样笔记相当于在 Git 和 Minio 都备份了一份,如果同步出现问题,只需要在 Minio 中新建一个桶,重新同步即可。
  4. 这个方式我使用了几个月了,目前没有发现问题。
版权声明:除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明来自` 故事的程序猿!`
侵权提示:部分信息可能来源于网络,仅作为学习和参考。如发现有侵权,请随时联系删除!

评论