备份与恢复
组织级备份在主服务器的 /root/infra-backup。脚本说明见该目录 README.md。密钥、rclone 配置和连接串只存在本机,不要写进文档仓库。
单系统额外步骤仍以系统文档为准,例如 CSSA GPT · Operations · 备份。
备份范围(当前开关)
root crontab 每天 02:00 执行:
/root/infra-backup/backup/run-all.sh
日志:/var/log/infra-backup.log。run-all.sh 内当前开关:
| 步骤 | 是否执行 | 说明 |
|---|---|---|
| Open WebUI | 开 | backup/openwebui.sh,卷归档后 rclone 到 R2 |
| SFTPGo 配置归档 | 开 | backup/sftpgo.sh |
| 数据库 dump | 关 | RUN_DATABASE=false,database.sh 里 DATABASE_BACKUP_ENABLED=false |
| SFTPGo 用户文件增量 | 开 | backup/sftpgo-user-sync.sh,rclone copy 到远端 userfiles/ |
| 类型 | 频率 | 存储位置 | 负责人 |
|---|---|---|---|
| Open WebUI 卷 | 每日 02:00 | 本机 staging + R2 分桶 | 运维(本机脚本) |
| 网盘配置 / 用户文件 | 每日 02:00 | R2(archive/ 与 userfiles/) | 运维 |
| 托管数据库(门户 Neon、抽奖 Railway 等) | 未由本脚本覆盖 | 各云厂商控制台 | 对应系统 maintainer |
本地 staging 默认约保留 3 天(utils/lib.sh 的 LOCAL_RETENTION_DAYS)。R2 archive/ 生命周期在控制台配置。
恢复流程
- 确认要恢复的日期与桶。
- 读
/root/infra-backup/docs/runbook-restore.md。 - Open WebUI:恢复前 停止
openwebui容器,再跑restore/openwebui.sh,避免 SQLite 损坏。 - 网盘:按 runbook 与 v1 服务器 SOP 核对 Linux 路径后再写回。
有权发起恢复的人:能登录主服务器的运维账号。恢复后做冒烟(对应域名可打开、关键登录可用)。
验证
- 看
/var/log/infra-backup.log与/root/infra-backup/logs/下当日 rclone 日志是否成功结束。 - 抽查远端对象大小是否合理。
- restore 演练周期未在组织层写成固定日历;重大活动前应对 GPT 与网盘各做一次演练。
检查清单
- 备份任务按计划执行
- 备份文件可读取且大小合理
- 数据库若需本机 dump,先改脚本开关并验证
DATABASE_DUMP_CMD(仍不要把口令提交到 Git)