配置备份与定时备份
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 共享):
| 字段 | 说明 |
|---|---|
| 名称 | 必填 |
| 存储挂载 | 选择「存储挂载」中已有的挂载点,只读或已停用的挂载点不可选 |
| 目录 | 挂载点内的子目录,留空为根目录 |
| 启用 | 开关 |
还没有挂载点时,先到「存储挂载」添加。删除目的地不会删除已经写入的备份。
执行流程
- 打包配置目录;设置了口令则加密。
- 写入本地目录(如已开启)和每个已启用的目的地,所有位置使用同一个文件名。
- 写入成功后,按保留数量清理该位置中较旧的备份。清理只处理文件名以
gately-backup-开头、扩展名为.zip或.zip.enc的文件,其他文件保持原样。 - 汇总结果,写入模块日志并发布通知事件。
没有启用本地目录也没有启用的目的地时,备份记为失败。同一时刻只运行一次备份。
通知事件
| 事件 | 级别 | 触发条件 |
|---|---|---|
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 与备份文件放在同一台机器上时,口令保护的价值有限。建议把加密备份写入另一台设备的挂载点,并另行记录口令。