Remotely Save 是 Obsidian 的一个第三方同步插件。Obsidian 用户和社区开发者发掘了不少官方同步以外的同步方式,不过大多需要在移动端借助第三方工具如 Syncing 或 Folder Sync。这次的 Remotely Save 在移动端不需要第三方工具辅助,仅插件本身即可实现同步,我认为是一个非常好的插件。
Remotely Save 支持 OneDrive、Dropbox、webdav、S3 服务,前两者因为网络原因在国内速度不稳定,网络上已有网友分享腾讯云 COS 的分享,但还没有阿里云 OSS 版本,虽本质相同,但细节有些许出入,本文简要记录一下阿里云 OSS 的配置过程。
执行任何操作前请做好数据备份
注:此方法会丢失笔记真实的最后修改时间,会改变为最后一次上传到 oss 的时间
2024-02-29 更新:
- 久未更新,该插件许多语言翻译或内容有所更改,请以官方文档为准
- 请阅读插件作者的帖子:同步插件 remotely save 恢复更新,欢迎大家尝试
- 更新至0.3版本或更新版本后,该插件支持使用准确的修改时间。
- 更新至0.3.40(或更早版本)后,区域(Region)选项需修改为前缀部分,例如在文章案例中,实际应该填写的内容为
oss-cn-shenzhen
首先需要在阿里云官网购买 OSS 服务。我购买的是标准存储,地域选在深圳,最便宜的 40GB 规格,一年下来仅需9元,遇上优惠活动还有更低的折扣。起初用做图床,现在发现开启新的 bucket 能作为 Obsidian 的同步服务,实属一个惊喜。
创建一个新的 bucket,名称任取,未来会在 Remotely Save 用到,地域选择离自己最近的地方,存储类型选择标准存储,读写权限切记要选择私有,其他保持默认。创建完成后,记录下这个 bucket 的 Endpoint,即 bucket 概览内的外网访问、ECS 的经典网络访问(内网)。
接下来在下方基础设置处设置跨域访问。创建一个新的规则,来源分三行写下:
app://obsidian.md
capacitor://localhost
http://localhost
在允许 Methods 里勾上全部5个选项,在允许 Headers 内填写一个 * 号,然后点击确定。
接下来管理 AccessKey。具体位置在阿里云后台右上角头像处,点击 AccessKey 管理,然后在弹出窗口中选择 使用子用户 AccessKey,创建一个用户。登录名称和显示名称可以自取,在访问方式里勾上 Open API 调用访问,这一步用来获取 AccessKey ID 和 AccessKey Secret。创建完成后会显示一遍这两个信息,且仅会显示一次,切记保存好。
此时我们获取所需的所有信息。回到 Obsidian,创建一个新的库,库名最好与刚刚创建的 bucket 名称相同,在所有需要同步的地方都使用相同的库名字,否则容易出错。打开 Remotely Save 插件,在 Choose service 处选择 S3 or compatible,在下方的5个框框填入对应信息:
- s3Endpoint 对应 外网访问
- s3Region 对应 ECS 的经典网络访问(内网)
- s3AccessKeyID 和 s3SecretAccessKey 对应刚刚创建完用户的生成的两个值
- s3BucketName 对应阿里云 OSS 内的 bucket 名字
此时点击 check connectivity 会提示无法连接,但实际上已经连接成功,回到 Obsidian,点击侧边栏的 Remotely Save 或在命令面板执行 Remotely Save: start sync,即可开始第一次同步。
第一次同步会把所有笔记保存到 OSS,但是不包括 .obsidian 文件夹的内容,意味着不会同步插件、主题和代码片段。其他设备同样如此设置:创建一个与 bucket 同名的库,然后安装 Remotely Save 插件,输入同样的 S3 信息,执行一次同步。在使用过程中,在任何设备保持 先执行同步,再编辑笔记,编辑完成再执行一次同步,可以最大程度上避免误操作导致数据丢失。
本文的 S3 配置同样适用于其他国内 S3 服务,大同小异。设置之前请注意做好数据备份。
0315 补充:
缺少了一个步骤,有朋友提到了,感谢他的帮助!
以下是补充内容:
教程漏了一步。在获取AccessKey ID 和 AccessKey Secret之后,需要在Bucket的“权限管理”页设置“Bucket 授权策略”——
然后点击“新增授权”,在弹出页面选定子账号,授权操作我目前选了“读/写”,可能还是需要“完全控制”——
点“确定”即可继续后面在Obsidian的步骤了。