Skip to main content
Version: Current

备份与恢复

组织级备份在主服务器的 /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:00R2(archive/ 与 userfiles/)运维
托管数据库(门户 Neon、抽奖 Railway 等)未由本脚本覆盖各云厂商控制台对应系统 maintainer

本地 staging 默认约保留 3 天(utils/lib.sh 的 LOCAL_RETENTION_DAYS)。R2 archive/ 生命周期在控制台配置。

恢复流程​

  1. 确认要恢复的日期与桶。
  2. 读 /root/infra-backup/docs/runbook-restore.md。
  3. Open WebUI:恢复前 停止 openwebui 容器,再跑 restore/openwebui.sh,避免 SQLite 损坏。
  4. 网盘:按 runbook 与 v1 服务器 SOP 核对 Linux 路径后再写回。

有权发起恢复的人:能登录主服务器的运维账号。恢复后做冒烟(对应域名可打开、关键登录可用)。

验证​

  • 看 /var/log/infra-backup.log 与 /root/infra-backup/logs/ 下当日 rclone 日志是否成功结束。
  • 抽查远端对象大小是否合理。
  • restore 演练周期未在组织层写成固定日历;重大活动前应对 GPT 与网盘各做一次演练。

检查清单​

  • 备份任务按计划执行
  • 备份文件可读取且大小合理
  • 数据库若需本机 dump,先改脚本开关并验证 DATABASE_DUMP_CMD(仍不要把口令提交到 Git)