缘起
论坛看到 关于如何恢复仓库密钥 突然意识到,同步密钥的备份非常重要!!!(我相信可能有不少人可能会忽略密钥保存问题)
即使你的同步密钥以已分别在不同的地方备份了一份,但保不齐哪天手贱或误操作修改了,但又未及时备份就糟了。更糟糕的是,如果自己还误以为已经备份了,等到事发时才发现并未备份,那可就惨了。
因此,就写了这个可以实时备份配置文件的代码。
功能简介
本代码可在每次刷新页面时自动检查并备份一次指定的文件到 webdav 上(会覆盖上一次的备份),默认是备份 conf/conf.json 文件,因为重要配置基本都在这个文件中,包括同步密钥,授权码等。
为什么选择页面刷新时备份,因为这个备份主要针对重要配置的更改,如同步密钥,授权码等,发现这些配置更改后,页面都会刷新一次,因此,在刷新时备份一次足够了。如果想定期备份请自行修改代码。
代码和使用方法
把下面的代码放到 js 代码片段中,然后配置下 webdav 信息和要同步的文件列表即可。
同步文件列表,仅支持文本文件,暂不支持二进制文件,文件夹等(文件夹可以把文件全部列出即可,二进制请自行修改代码实现)
对备份文件进行了简单的 base64 编码,并加了随机干扰码,解码时需要先去除前 10 位字符才行(可起到一定的安全作用)。
这里建议把 https://jsd.onmicrosoft.cn/npm/webdav@5.8.0/+esm 下载到本地使用,性能更好。
这里 WebDav 推荐 https://infini-cloud.net,注册成功即得 20G 永久空间,然后在 My Page 页面输入 QEU7Z 这个推荐码后再额外赠送 5G 永久空间。
最终文件会备份到 webdav 根目录/siyuan_backup/+ 文件路径下。
注意事项
由于代码中含有 webdav 账号等敏感信息,使用期间,思源 3.3.2 之前版本请勿开启发布服务!!!(因为,发布服务下,webdav 账号会暴露到前端,非常不安全),3.3.2 及之后版本,只需要在代码片段不勾选发布服务即可,在发布服务时自动不加载,因此就没有这个问题了)
3.3.3 之前版本,如果必须开启发布服务时,请先到代码片段中,禁用该代码片段后再开启。
详情参考 issue Issue #15806 · siyuan-note/siyuan (3.3.2+ 已实现)。
再次提醒
由于密钥等配置信息是重要数据,且出错影响较大,甚至导致所有文件丢失,请不要太依赖本代码的备份,请及时手动做好重要信息的备份工作!!!本代码仅建议作为参考或备用的作用。
再次提醒!!!虽然本代码已提供了实时备份功能,但还是建议每次修改配置后,手动及时备份重要数据,不要太依赖于自动脚步,脚步可能意外失效,出错等,正如免责声明所说,不保证代码的有效性和可靠性,由此引起的一切后果自负。
免责声明
本文所提供的代码仅是 demo 或仍处于实验阶段,仅供学习与参考之用。
请在充分测试、确认无误后再谨慎使用,仅建议作为参考或备用的作用,切勿直接用于生产环境。
如因使用本文所述方法造成任何问题,本人不承担任何责任。
如你有任何疑问或优化建议,欢迎留言交流,共同进步!



欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于