Skip to content

配置备份与定时备份 ​

Gately 的全部配置保存在配置目录下的 *.json 文件中。备份功能把这些文件打包,支持手动下载、定时写入多个位置,以及用备份覆盖恢复。管理界面位于侧边栏「系统」分组 → 「设置」→「备份与迁移」标签页。

备份内容 ​

备份包是一个 zip 文件,包含配置目录根部的全部 *.json(账号、各模块规则、证书、令牌哈希等)。其中有密码哈希、密钥、API 令牌哈希与证书私钥,需要妥善保存。运行日志(logs/)与操作审计日志(audit.log)不在备份中。

文件名格式为 gately-backup-YYYYMMDD-HHMMSS.zip,加密备份为 gately-backup-YYYYMMDD-HHMMSS.zip.enc。

手动备份与恢复 ​

下载备份 ​

「备份 Gately 配置」卡片的「下载备份」按钮下载当前配置的 zip。手动下载的备份不加密。

恢复 ​

「恢复配置」卡片选择备份文件后点击「恢复」,在确认框中输入「恢复」两个字。

  • 恢复会覆盖当前全部配置,上传大小上限 64 MB。
  • 覆盖前,现有配置先复制到配置目录下的 backup-时间 文件夹(时间格式 YYYYMMDD-HHMMSS),恢复成功后界面提示该路径。
  • 恢复后 Gately 自动重启。
  • 备份中必须包含账号配置,缺失时拒绝恢复。
  • 备份包只接受位于 zip 根目录、非隐藏、内容为合法 JSON 的 *.json,其余条目被忽略。
  • 选择 .enc 文件时界面出现「备份口令」输入框,填写创建该备份时设置的口令。口令错误或文件损坏时恢复失败。

备份下载与恢复接口只接受登录会话,API 令牌 无法调用。

定时备份 ​

「备份与迁移」标签页下方的「定时备份」卡片,右上角开关控制是否启用。对应模块 ID 为 backup,令牌权限域为 backup:read 与 backup:write。

设置说明
执行计划5 段 cron 表达式,默认 0 3 * * *(每天 03:00),也可用 @daily、@weekly 等描述符
保留数量每个目的地各保留最新的 N 份,范围 1 到 365,默认 7
加密口令留空不加密;设置后生成 .zip.enc 备份。已设置口令时输入框留空表示保持不变
本地目录开关,默认开启。写入配置目录下的 backups 文件夹

点击「保存设置」使计划生效,「立即备份」立即执行一次。卡片显示最近一次的执行时间、触发方式(手动或定时)、下次执行时间,以及每个目的地的成功或失败结果与清理的旧备份数量。本地备份文件在卡片中列出,可下载。

备份目的地 ​

除本地目录外,可以添加多个远程目的地,每个目的地写入「存储挂载」中的一个挂载点(本地目录、远程 WebDAV 或 SMB 共享):

字段说明
名称必填
存储挂载选择「存储挂载」中已有的挂载点,只读或已停用的挂载点不可选
目录挂载点内的子目录,留空为根目录
启用开关

还没有挂载点时,先到「存储挂载」添加。删除目的地不会删除已经写入的备份。

执行流程 ​

  1. 打包配置目录;设置了口令则加密。
  2. 写入本地目录(如已开启)和每个已启用的目的地,所有位置使用同一个文件名。
  3. 写入成功后,按保留数量清理该位置中较旧的备份。清理只处理文件名以 gately-backup- 开头、扩展名为 .zip 或 .zip.enc 的文件,其他文件保持原样。
  4. 汇总结果,写入模块日志并发布通知事件。

没有启用本地目录也没有启用的目的地时,备份记为失败。同一时刻只运行一次备份。

通知事件 ​

事件级别触发条件
backup.done信息所有位置写入成功,消息中列出文件名与各位置结果
backup.failed错误打包失败或任一位置写入失败,消息中列出每个位置的结果

在 通知中心 中创建订阅 backup.* 的规则,即可通过 Telegram、邮件等渠道收到备份结果。

加密 ​

设置口令后,备份按以下方式加密:

  • 密钥派生:scrypt(N=32768,r=8,p=1),输出 32 字节密钥,盐为 16 字节随机数。
  • 加密:AES-256-GCM,nonce 为 12 字节随机数。
  • 文件格式:魔数 GATELYBK1、盐、nonce、密文依次拼接,魔数同时作为 GCM 的附加认证数据。

口令只保存在配置目录的 backup.json 中,丢失口令后备份无法解密。

注意

backup.json 与备份文件放在同一台机器上时,口令保护的价值有限。建议把加密备份写入另一台设备的挂载点,并另行记录口令。

以 Apache-2.0 许可证开源发布。