0 缘起
思源笔记帮助文档中关于同步的工作原理、同步冲突产生的原因介绍如下:
自动/手动同步模式工作原理
思源通过对比云端数据快照和本地数据快照进行相应操作:
如果快照相同则忽略本次同步
如果快照不同,则将本地距离上次同步的变更上传到云端,将云端最新的变更合并到本地
- 如果两端的变更没有冲突则直接合并
- 如果存在文件冲突,则以本地为准覆盖云端,同时拉取到的云端冲突文件会归入到数据历史中
自动同步模式场景例举
从上述工作原理我们可以得知,思源仅支持在多设备上交替同步数据:设备 A 上同步完成以后设备 B 上再进行同步。无法支持多设备同时同步,这样会发生无法预期的数据覆盖。
正常场景
- 在设备 A 上编辑后执行同步(通过自动或者手动触发同步),此时云端数据会被设备 A 数据覆盖,既云端和设备 A 保持数据一致
- 在设备 B 上执行同步,此时设备 B 数据会被云端数据覆盖,即云端和设备 A、B 保持数据一致
- 设备 B 上编辑后再次执行同步,此时云端数据会被设备 B 数据覆盖,既云端和设备 B 保持数据一致
- 在设备 A 上执行同步,此时设备 A 数据会被云端数据覆盖,即云端和设备 A、B 保持数据一致
该场景下,使用同步的过程是在设备 A、B 上交替进行的,这样能够保证数据同步符合预期正常完成。
冲突场景
- 在设备 A 上编辑 a 文件后同步
- 在设备 B 上编辑 a 文件后同步
- 此时云端 a 文件会被 B 设备上的 a 覆盖,同时在 B 设备上生成之前 A 设备 a 的历史
可以看到,如果一个设备在同步前先编辑了一个文件,然后再进行同步,则可能会产生冲突。因此,为了减少冲突,需要从几个方面解决:
- 养成在编辑前先同步的好习惯。
- 不要多个客户端同时在线。
- 若需要多个客户端同时在线(但不能同时编辑),则一个设备同步后应告诉其他设备及时进行同步,也就是官方订阅提供的“同步感知”功能。
由于官方订阅只提供了 8G 的空间,很多人使用了第三方 S3 服务,无法使用“同步感知”功能。之前集市中上架了一个同步感知插件,通过第三方服务器提供了同步感知功能,但是插件作者提供的服务器已经关闭,需要自己部署服务器。
一个长期、稳定的服务器对于同步感知功能来说是至关重要的,因此我基于 Quicker 的推送服务做了同步感知的功能。
1 Quicker 动作介绍
动作下载:思源同步感知与远程管理 - by 浅沧 - 动作信息 - Quicker (getquicker.net)
上面的动作提供了两个功能:
- 同步感知。一台设备同步后,告知其他设备进行同步。
- 远程管理。在一台设备上远程关闭其他设备上运行中的思源笔记客户端。
1.1 使用方法
-
运行 Quicker 动作
- 如果思源笔记处于前台,则会触发思源的同步功能,同步完成后告知其他电脑进行同步
建议设置如下快捷键
- 如果思源笔记处于后台,则会显示远程管理界面,选择其他电脑上需要关闭的思源笔记
- 如果思源笔记处于前台,则会触发思源的同步功能,同步完成后告知其他电脑进行同步
-
也可能通过动作的右键菜单直接调用远程管理功能
1.2 工作原理
同步感知工作原理大概是这样的:
- 所有电脑上的 Quicker 客户端连接到 Quicker 服务器,保持长连接
- 在电脑 A 上运行动作
- 动作会让思源笔记进行同步,将文件上传到 S3 服务器
- 等电脑 A 的思源同步完成后,动作会推送消息到 Quicker 服务器
- Quicker 服务器向电脑 B 上的 Quicker 客户端发送同步消息
- 电脑 B 上的 Quicker 客户端接收到消息后,自动运行动作
- 动作触发电脑 B 上思源笔记的同步功能,从 S3 服务器下载数据
远程感知的工作原理和同步感知类似,过程如下:
- 所有电脑上的 Quicker 客户端连接到 Quicker 服务器,保持长连接
- 在电脑 A 上运行动作
- 动作向 Quicker 服务器发送消息,要求获取其他电脑上的思源笔记客户端
- Quicker 服务器向电脑 B、C 上的 Quicker 客户端发送消息
- 电脑 B、C 上的 Quicker 客户端接收到消息后,将本电脑上运行中的思源笔记客户端信息回传给 Quicker 服务器
- Quicker 服务器将电脑 B、C 的信息转发给电脑 A
- 电脑 A 的 Quicker 客户端接收到消息后,显示其他电脑上运行中的思源笔记客户端
- 用户在电脑 A 上选择需要关闭到客户端,Quicker 发送消息到服务器
- Quicker 服务器向指定的电脑发送消息(比如电脑 C)
- 电脑 C 接收到消息后,关闭指定的思源笔记客户端
1.3 使用需要配置的内容
1.3.1 Quicker 的配置
- Quicker 各个客户端连接到推送服务
- 点击上图的推送工具,打开 quicker 会员中心,填写推送验证码并保存
- 运行动作或者点击动作右键菜单的“修改推送配置”,在弹出的窗口中填写 Quicker 账号的邮箱、上一步填写的推送验证码
1.3.2 思源笔记上的配置
- 下载“运行 Javascript”插件(0.7.1 及以上版本)
- 启用该插件的 websocket 功能
使用此插件才能从外部关闭思源笔记。
2 安卓手机上使用 Http shortcuts 进行远程管理
软件下载:Waboodoo/HTTP-Shortcuts(需要 3.17.0 及以上版本)
导入 shortcuts:shortcuts 思源笔记.zip
具体的配置可以看这个帖子:安卓版 quickAdd V3,从任意位置向思源笔记发送文字与文件 - 链滴 (ld246.com)
2.1 在手机上进行远程管理
- 长按桌面上的 http shortcuts 图标
- 点击 思源远程管理
- 选择需要关闭到电脑客户端(由于 http shortcuts 功能限制,一次只能选择一个客户端进行关闭)
2.2 发送文字、文件到思源笔记功能的升级
- 已经支持发送多个文件到思源笔记
- 在添加内容到思源笔记之前会先进行一次同步,同步完成后再添加到日记末尾,然后再进行一次同步,减少数据冲突
2.3 注意事项
- 由于 Quicker 服务器不支持第三方应用进行长连接,安卓端只能发送消息,不能接收消息,即无法从电脑关闭手机上的思源笔记、触发手机上的同步。
- 使用前需要先到 http shortcuts 的变量界面填写 quickerEmail(quicker 账号邮箱)和 quickerPushCode(推送码) 两个变量的值,以便向 Quicker 服务器发送消息。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于