Obsidian 使用 Remotely Save + 阿里云 OSS 实现多平台同步

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 的同步服务,实属一个惊喜。

OSS1

创建一个新的 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的步骤了。

31 个赞

看起来有些复杂啊,先支持一波!

1 个赞

还会产生外网访问费用和请求费用

默认套餐已经cover掉这些费用了,具体计算比较复杂,不过就目前使用情况(图床+ob同步),暂时没有出现过超过流量额度被收费的问题

lz大大,我按教程买了40G套餐,结果刚被告知欠费,下行流量必须额外购买,请教一下你是怎么做到cover的?

教程漏了一步。在获取AccessKey ID 和 AccessKey Secret之后,需要在Bucket的“权限管理”页设置“Bucket 授权策略”——

然后点击“新增授权”,在弹出页面选定子账号,授权操作我目前选了“读/写”,可能还是需要“完全控制”——

点“确定”即可继续后面在Obsidian的步骤了。

2 个赞

感谢!我确实少了这一步,有几位朋友也提到了这个问题。我想把你的截图贴到正文里可以吗?

我没有购买额外的套餐,不是很清楚为何需要购买下行流量。可以看一下具体如何提示的吗?

没问题的 :ok_hand:

顺便把下一层也回复了吧,我是同步了一次之后收到了欠费通知,下载60兆欠了两分钱,oss服务也就停了。后来我查他们的说明文档,里面确实有讲下行流量另算(腾讯云也如此),流量包比较贵,几块几块地充比较合算。可能你买得比较早,那时候还赠送下行流量吧。

看一下账单,我用了两天,目前没有遇到收费情况。看接下来的使用情况了

问下大家用这个同步速度怎么样啊,我设置好后,在windows上同步的时候第8步都要很久(大概几分钟?),而在iphone手机端都是秒同步。有人知道是为什么吗?

这个可能跟你选择的对象存储所在地和笔记数量有关,我目前的配置是深圳 OSS,共不到400个笔记,40个文件夹,通常在2秒之内同步完成,桌面端和移动端一样

obsidian pc端,文件目录调整后,OSS端的目录没有同步调整~~,这个问题怎么解决呢?

这个我没有碰到过,不过倒是碰到过删除了附件又重新出现的情况,不够稳定

有可能是旧版本不支持同步删除操作。
也有可能是多台设备自动同步,然后你删除了的设备还没同步,就被另一台设备的自动同步覆盖了……

按道理是可以的,麻烦把插件和obsidian都更新到最新版试试?还有问题的话可以在git issue提bug,谢谢

大大您好,能请教一下图床的搭建方法吗,网上找的都是用GitHub或者gitee

图床的建立有许多方法,建议使用关键词 阿里云OSS 图床 或者 腾讯云COS 图床 之类的关键词自行搜索

好的谢谢!感谢!!!

这个好像是增量同步,除了第一次比较慢,后面再同步,除非你改动了许多东西,一般挺快的,我每次就2秒或者1秒,很快