Obsidian 同步 Remotely Save S3 配置指南
Obsidian 是非常优秀的笔记软件,其插件非常丰富,极大地丰富了 Obsidian 的功能。本文借助 Remotely Save 实现同步。
相关信息
Obsidian v0.13.19
Remotely Save v0.2.13
项目地址:
https://github.com/fyears/remotely-save
分享链接:
obsidian://show-plugin?id=remotely-save
插件支持同步方式: S3及其兼容存储,Dropbox,OneDrive for personal,webdev。
缘起
我个人算是半个工具控,尝试过许多笔记软件。如云笔记中的 OneNote,Notion,有道云笔记,印象笔记,为知笔记,蚂蚁笔记,幕布等等。在线文档也有使用,如企业微信,飞书文档,语雀等等。也尝试过 VSCode+Git,Joplin,Trilium,思源笔记等等可以自部署的方案。
其中 VSCode+Git 非常好用,但是苦于没有合适的安卓客户端。git也不能使用。很多 Markdown 编辑器也有着不能存储图片的问题,虽然可以存在 Gitee 上,使用 Gitee 网页正常浏览。但终究还是需要更稳定的解决方案。
Joplin 是非常优秀的软件,虽然客户端不太好看,但是确实足够用了。Joplin 本身也支持S3存储,我使用过 腾讯云 COS 作为存储方案,但是他会生成非常多的文件。我不到 100 个笔记有 7000+ 文件生成。
Obsidian 以前就一直在关注了,由于 Obsidian 使用本地文件夹,我曾经配置过同步文件夹软件。但是比较麻烦。可以说,插件的出现解决了一个大麻烦。Remotely Save 可以说我一直在等待这样一个插件。
S3存储
可使用 AWS S3 , 腾讯云 COS ,阿里云 OSS 。截止发文,阿里云 OSS 可以正常同步但是 Check Connectivity 时会报错。我测试COS可以正常使用,同时贴出 COS ,OSS 相关配置。
Obsidian COS 费用计算
购买资源包 1年约7折 都是一年计算
项目 | 规格 | 费用(1年) |
---|---|---|
10GB存储包 | 10GB | 约10 元 |
外网流量 | 每月10GB | 约40元 |
读写请求 | 每月20万次 | 不到2元 |
总计每年约 52元,就可以有 10GB 存储,每月 10GB 流量,读写请求每月 20万次的笔记了。
并且如果达不到每月的资源包消耗,可以不购买资源包。比如10G存储包,实际个人笔记很难达到10G。再如流量费用:存储 1G 笔记,预计正常同步一年可能不超过10元。每多一个同步设备每次额外花费0.5元流量费用。读写请求费用比较低,也不占大头。
我预估值可能出现错误,我会使用这个COS存储一段时间来完善我的费用数据,但是总而言之,轻量使用费用不会很高。截止 202306根据使用情况,我的笔记约千条笔记,平均每月费用不足 0.3 元。每月大约几百兆流量,几万次请求。
插件配置同步
使用这个插件配置同步功能时,导出配置会显示一个二维码或者是一条链接。在一个需要安装了 Remotely Save 的新设备上建立名称相同的库,并且安装这个同步插件。然后使用手机二维码识别功能,就可以正常的导入配置了。
配置示例:
配置项目名 | OSS | COS |
---|---|---|
s3Endpoint | oss-cn-beijing.aliyuncs.com | cos.ap-beijing.myqcloud.com |
s3Region | oss-cn-beijing | ap-beijing |
s3AccessKeyID | AccessKey 获取 | AccessKey 获取 |
s3SecretAccessKey | AccessKey 获取 | AccessKey 获取 |
s3BucketName | obsidian-123 | obsidian |
说明:
s3Endpoint OSS COS 均选择了北京节点
s3AccessKeyID,s3SecretAccessKey 对应的子用户记得授权。
s3BucketName 为存储桶名称。
注意 注意添加授权跨域请求CORS,后面图11为CORS配置界面。高版本 Obsidian 和 Remotely Save 并不必须
app://obsidian.md
capacitor://localhost
http://localhost
COS 可以参考:
Joplin 和这个插件类似,除了填写的东西不同其他均相同。下面是我个人配置的。
COS 配置流程
OSS 配置类似
OSS 配置流程
阿里云对象存储 OSS 和腾讯云 COS 对象存储步骤一致,只不过界面有所不同。
注意:没保存也可以在访问控制-用户中找到并查看 AccessKey ID 和 AccessKey Secret
其他对象存储说明
还有一些可选的,比如 七牛云 Kodo ,自建对象存储 MinIO 。大同小异,就不一一赘述了。
我注意到有人提到七牛云 Kodo 没有备案域名问题,实际上仅仅为 Obsidian 笔记备份,没有备案域名不是问题。一般说需要备案域名是在搭建图床后,没有备案域名不能公开访问。而同步笔记不会用到这个功能。不过 Kodo 免费 10GB 存储是个不大不小的吸引人的地方,但是正常购买一月 10GB 也就 1 元,正常使用存储笔记的费用也不占大头。根据个人需求尝试选择吧。
其他端配置流程
使用这个插件配置同步功能,导出配置会显示一个二维码或者是一条链接。在新设备上建立名称相同的库,并且安装这个同步插件。然后使用手机二维码识别功能,就可以正常的导入配置了。
同步
问题
每次同步前后移动文件都要注意,可能出现重复文件。同步是增量同步,不会删除本地文件。逻辑是云,手机,PC中同一文件,PC删除后,云也删除。手机同步时,不会删除。这个问题在后续版本得到了解决。但是如果忘记手动同步,还是可能出现数据混乱。
常见问题及回答
- ios 版本问题
remotely save 插件作者提到 ios15 以上可以工作,而作者手头没有相关设备无法测试。低版本 ios 可能无法使用 - 体验不够丝滑
如果感觉 remotely save 效果慢等问题,不追求移动端同步可选坚果云等支持文件夹同步到软件。或者加预算使 Self-hosted LiveSync (ex:Obsidian-livesync) 插件 CouchDb 数据库同步,此插件支持移动端,支持实时同步,门槛高一些体验好一些。 - 应该买哪种资源包?存储容量,流量,读写请求如何选择?
建议使用一段时间后看账单决定,一般而言无需购买资源包。 - 插件无法加载
尝试重新下载,或复制配置完成的库文件夹到无法加载的设备本地文件夹上 - 报错 AWS authentication requires a valid Date
or x-amz-date header
更改到正确的时区 - 每次打开都会大量下载笔记和附件
我个人是双系统 , Windows 与 Linux 之间公用文件夹出现这个问题。而这两个系统在同一个设备上时间上有个坑。说回来这个问题最后我的方案是不同步 1Mb 以上的附件。如有详细原因请给我留言或发邮件,待补充 - 误删文件问题
由于插件规则是新文件替换旧文件,删除的文件列表会单独在云端存一个文件,包含删除的文件名和文件修改时间。然后同步时就会特意删除文件了。
避免误删误操作的方法
- 删除文件,在 obsidian 中设置成移动到 .trash 目录即可。文件丢了上那里去找就行了。
- 多端同步时,别的设备先不同步稍微修改下文件,使修改日期最新,然后同步应该就可以了。
- 对象存储服务,如 阿里云 oss,腾讯云 cos 都有版本控制功能。创建存储-高级可选配置,打开版本控制。误删除文件后,并同步后,可在对象存储-文件列表-历史版本中看到。也就可以恢复了。(注意设置生命周期及时清理历史文件,避免大量为不必要的历史文件存储付费)
- 报错 request failde,status403
权限配置错误。也可能没配置跨域,还有可能是设备时间差了 15 分钟以上。其余错误原因可能较小暂时不提。参考 https://cloud.tencent.com/document/product/436/54303 - 总是忘记手动同步,是否可以自动同步?
仅可以配置启动后一定时间内执行一次同步,以及几分钟执行一次。 - 扫码报错
注意库文件夹名需要一致
高级玩法
- Alist 挂载,Web 端读写对象存储内的笔记
- Alist 挂载,安卓 Mix 挂载 Alist 提供的 WebDAV 读写笔记
- 使用对象存储 API 操作文件,按这个思路可以达到一部分云笔记提供的 API 功能。
如果有服务器或 NAS ,可使用 Docker 部署并配置 Obcsapi-Go ,本文标题下面的系列文章有介绍。开源项目 https://gitee.com/kkbt/obcsapi-go
即使没有,可使用阿里云云函数,熟悉的话几分钟就能搭建好了。此外 Obcsapi 的 Python 早期版本就是使用了云函数,供参考。
Obcsapi Go 效果:类似 flomo ,有 PWA 应用与一些 API 。用户可编写 Lua 和 Bash 自定义或拓展功能。更多功能见文档
高级玩法最好有些编程基础,或者至少熟练使用 Docker 等工具。代码开源,可根据需要自行修改。
此外,因为 markdown 纯文本特性,本身方便程序操作。具体拓展功能,或程序语言问题可以问现在的 AI 即可。如问题 “使用 python 找到一个文件夹下所有 .md 文件,并将打印所有包含 #tag 的行。”操作文件前注意备份。
欢迎赞赏~
赞赏