[js] 简单实现 webdav 实时备份重要文件(密钥安全再无忧)

缘起

论坛看到 关于如何恢复仓库密钥 突然意识到,同步密钥的备份非常重要!!!(我相信可能有不少人可能会忽略密钥保存问题)

即使你的同步密钥以已分别在不同的地方备份了一份,但保不齐哪天手贱或误操作修改了,但又未及时备份就糟了。更糟糕的是,如果自己还误以为已经备份了,等到事发时才发现并未备份,那可就惨了。

因此,就写了这个可以实时备份配置文件的代码。

功能简介

本代码可在每次刷新页面时自动检查并备份一次指定的文件到 webdav 上(会覆盖上一次的备份),默认是备份 conf/conf.json 文件,因为重要配置基本都在这个文件中,包括同步密钥,授权码等。

为什么选择页面刷新时备份,因为这个备份主要针对重要配置的更改,如同步密钥,授权码等,发现这些配置更改后,页面都会刷新一次,因此,在刷新时备份一次足够了。如果想定期备份请自行修改代码。

代码和使用方法

把下面的代码放到 js 代码片段中,然后配置下 webdav 信息和要同步的文件列表即可。

https://gitee.com/wish163/mysoft/blob/main/%E6%80%9D%E6%BA%90/webdav%E7%AE%80%E5%8D%95%E6%96%87%E4%BB%B6%E5%A4%87%E4%BB%BD.js

同步文件列表,仅支持文本文件,暂不支持二进制文件,文件夹等(文件夹可以把文件全部列出即可,二进制请自行修改代码实现)

对备份文件进行了简单的 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 或仍处于实验阶段,仅供学习与参考之用。
请在充分测试、确认无误后再谨慎使用,仅建议作为参考或备用的作用,切勿直接用于生产环境
如因使用本文所述方法造成任何问题,本人不承担任何责任。

如你有任何疑问或优化建议,欢迎留言交流,共同进步!

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    28447 引用 • 119791 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    285 引用 • 1988 回帖
5 操作
wilsons 在 2025-09-11 00:45:52 更新了该帖
wilsons 在 2025-09-09 23:06:08 更新了该帖
wilsons 在 2025-09-09 11:45:09 更新了该帖
wilsons 在 2025-09-09 11:28:39 更新了该帖 wilsons 在 2025-09-09 10:56:24 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 有点意思

  • 其他回帖
  • wilsons

    我把密钥铭刻进昆仑之石,
    藏于云纹深处,无声漫过九重之巅,
    像远古的祭司写下永恒的誓约。
    每一次刷新都是悄然铭记,
    没有复杂与繁琐,
    静静地守护着时间的刻度。

    就算世界沉入沧溟,
    海啸吞没天地,
    烈火焚尽最后一块硬盘——
    我仍能闭上眼,敲键念诀:
    “重回从前”

    一念之间,时光倒流。
    世界重启,
    笔记的光标闪烁不停,
    那串从未丢失的密钥,
    正安静地躺在那里,
    从未离开。

    因为这不仅是云,
    更是不会崩塌的数字神殿。
    每一天,它都在镌刻着光阴,
    仿佛在说:

    “别怕,
    我记得一切。”

  • image.png

    可以搞成这样背熟,中文的也有。

    1 回复
  • wilsons

    0.0.3 更新内容

    修改备份路径为/siyuan_backup

    0.0.2 更新内容

    对备份文件进行了简单的 base64 编码,并加了随机干扰码,因此解码时需要先去除前 10 位字符才行(可起到一定的安全作用)

    1 操作
    wilsons 在 2025-09-09 11:49:35 更新了该回帖
  • 查看全部回帖
wilsons
正式入驻知乎了,以后新贴主要在这里。 欢迎大家订阅关注! 你的关注对我是莫大鼓励,也能让我持续产出优质内容,我们一起成长 🙏 点这里立即关注:https://www.zhihu.com/people/wilsonses