Obsidian Remotely Save
Remotely Save 是一款非官方的 0.0 Obsidian 介绍 笔记软件同步插件。它允许用户通过多种云服务进行笔记的同步,包括 Amazon S3、Dropbox、OneDrive 以及 WebDav 等。插件还支持端到端加密、计划自动同步等功能,并完全开源。
主要特性:
- 支持多种云服务: 用户可以选择 Amazon S3、Dropbox、OneDrive 等云服务进行同步。
- 移动端支持: Vaults 可以在移动端和桌面设备之间同步。
- 端到端加密: 如果用户指定密码,文件将在发送到云端之前使用 openssl 格式加密。
- 自动同步: 用户可以计划自动同步,也可以手动触发同步。
- 开源: 插件完全开源,使用 Apache-2.0 许可证。
使用限制:
- 需要支持删除同步的额外元数据上传。
- 无冲突解决机制,所有文件和文件夹都使用“最后修改时间”进行比较。
- 云服务可能产生费用。
- 浏览器环境的一些限制。
- 需要保护包含敏感信息的 data.json 文件。
设置技巧
设置技巧:
- 自动运行:每5分钟同步一次
- 启动后自动运行:第1s运行一次
使用技巧:
- 尽量减少在多设备上同时编辑一篇文章
- 如果需要这样,使用手动同步,确保万无一失
其它时候,基本上能够自动多设备同步,无需认为干预。
同步算法
《Remotely Save》的同步算法 V2 通过精确的时间戳比较和操作组合,实现了文件和文件夹的同步。它考虑了本地和远程的删除历史,以及文件和文件夹的创建和删除逻辑。通过这种方法,它确保了跨设备的准确同步,同时也揭示了同步过程中可能遇到的一些特殊情况和处理方法。
同步源
同步算法 V2 主要依赖于四个记录源:
- 本地文件: 通过扫描本地 vault 中的所有文件获取。
- 远程文件: 通过扫描远程服务上的所有文件获取。
- 本地“删除或重命名”历史: 通过 Obsidian 的跟踪 API 记录。
- 远程“删除”历史: 插件在每次同步时上传。
文件同步处理
同步算法通过收集四个时间戳,并尊重最大时间戳及其相应的操作来处理文件同步。以下是时间戳的组合及相应的操作:
mtime_remote
、mtime_local
、deltime_remote
、deltime_local
的组合,决定了本地和远程文件的删除、清理、上传等操作。- 通过比较这些时间戳,算法确定了文件的同步、删除、下载、上传等具体操作。
文件夹同步处理
文件夹的同步不使用任何元数据,只关注文件夹的名称。算法首先生成所有文件的计划,然后确定文件夹的存在性。如果应存在的文件夹在本地或远程不存在,则相应地递归创建。
文件夹的删除必须满足以下条件:
- 在远程删除历史中出现。
- 它是空的,或者所有子文件夹都可以删除。
示例
- 用户在设备1中删除文件夹,然后从设备1同步,然后在设备2中创建同名文件夹,然后从设备2同步。文件夹在设备2上被删除(再次)。
- 用户在设备1中删除文件夹,然后从设备1同步,然后在设备2中创建同名文件夹,然后在其中创建新文件,然后从设备2同步。由于新文件的存在,文件夹在设备2上被保留,而不是删除。
- 用户在设备1中删除文件夹,然后从设备1同步,然后不触碰设备2中的同名文件夹,然后从设备2同步。文件夹及其未触碰的子文件应在设备2上删除。
网络资源
- remotely-save/remotely-save
- remotely-save/docs/sync_algorithm_v2.md
- Obsidian通过Remotely save插件实现坚果云webdav同步 - 经验分享 - Obsidian 中文论坛
本文作者:Maeiee
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!