自动补跑修复 PR #3 的精确候选 HEAD d8bb18a0916fae5374125a7999125273f7bcdba6 经源 CI run 3142 成功与独立交叉评审 PASS;正常合并提交 012d06cf49425713b18df063fd7dbc8e0435fac8。从干净合并提交部署,备份任务现每小时 :30 触发。当天已验证则只做状态检查;当天本机备份待复制则先补复制;跨日旧失败不阻止新本机快照。守卫先恢复任何中断维护状态。
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
用户授权将现有 Gitea 修到能够可靠接管的状态。范围:识别真实数据卷并修复空备份;隔离恢复演练;持久化、仓库受限的 Runner;CI 成功和失败阻断验收;服务恢复、运维记录。保留已有 GitHub 主链与现有仓库数据。异机备份目标由用户提供。根因:备份脚本使用 gitea-data,实际数据卷为 gitea_gitea-data;现有 launchd 任务未加载。
平台修复进展(2026-09-25,最终恢复演练进行中):
b6e8204合并,merge 917501939b9abe8045fbf628f274ae2d7db87d28。待用户处理:macOS 后台 Python 的可移除宗卷权限;backup.key 独立保管。无人值守 T5 备份与整机丢失恢复尚未验收。备份遇运行中 CI 会退出且当前没有自动补跑;小时审计仅写日志,无主动告警。正式业务 workflow/secrets/发布管道及 GitHub 订阅尚未切换。
最终自主验收回执(2026-09-25):
最新 T5 快照已经完成真实恢复和隔离运行验收。
d69b8becc5cd900ec967875424c087782837da20e1b8f82d9b5f7990901a772d;T5 数据 snapshot83ce9d3e6dbe53c161a8f22b14419cb63135ca619541b0c91d40d65ca290c9ab。全量 restic read-data 通过,本次冷拷贝服务暂停 63.21 秒。gitea-restore-check-32304b1aaa41:SQLite integrity、208 仓库 / 43 issue / 19 PR / 6 用户、全部 refs 摘要一致,每库 git fsck --full 通过。完成时间2026-09-25T15:35:59.612184+00:00。bcae9725115cbcafefb48adb732155047e5879c69f6fb04b49549a01d6c05188一致。演练容器已停止并还原其原始 app.ini。仍不关闭此 issue: 后台外盘查询超时,最后交互 status 复测也外盘查询超时;macOS 权限待用户处理。独立密钥保管尚未得到确认。额外的 T5 工具文件重新校验卡在系统 open,已终止只读检查,待授权后重试并复制最终回执。已有加密快照的全量读校验及最新完整恢复确已成功,不与后续权限阻断混淆。
03:30 备份/60 秒恢复守卫/小时审计已安装,但运行中 CI 导致备份退出后没有自动补跑;审计只写日志、没有主动告警。正式业务 workflows、Secrets、部署及 GitHub 账单尚未切换。平台和私有试点验收通过,不宣称无人值守或全部 GitHub 接管已完成。
详细中文回执位于
/Users/brunogao/ops/gitea-reliability/ACCEPTANCE.md;当前运行说明和早先交接文档均已入源码仓库。本评论补充其中最新 CI、快照和恢复结果。部署前记录(2026-09-26):PR #3 已按
d8bb18a091的真实 Gitea CI run 3142 成功状态和独立交叉评审 PASS 合并;确定的 master merge commit 是 012d06cf49425713b18df063fd7dbc8e0435fac8。本次发布范围只涉及 Gitea 备份脚本与 3 个用户 LaunchAgent 的配置:03:30 起每小时检查,遇 CI 忙稍后重试,当前窗口外盘复制失败时先补复制现有本机快照,跨日旧失败不挡新本机备份。正式容器镜像、数据卷、Runner、学生数据、共享服务均不在本次变更范围。
部署前确认 Gitea healthy、运行中 CI=0、维护标记不存在;旧脚本和三个 LaunchAgent 已备份到
/Users/brunogao/ops/gitea-reliability/deploy-before-20260926T000015Z,可据此回退。将从上述 merge commit 的干净隔离目录安装;随后用实际 launchd kickstart 验证退出码和无重复停机。今天 03:30 的快照
cc2940aca52a5c759c40742e0af3c138609512eb1d968887f6d7a4f19b2c04f3已于 07:44 不停机补复制到 T5 并通过全量 read-data,后台 audit 07:45 已成功。恢复密钥独立保管仍待用户确认。2026-09-26 发布及备份补跑回执(保留 issue 开启,等待异机密钥保管确认)
cc2940aca52a5c759c40742e0af3c138609512eb1d968887f6d7a4f19b2c04f3;diskutil查询 T5 超时使异机复制失败,任务正确以失败退出,未误报为成功。52f09d35e3fd31ce2aa3d24925ef101533dcff1f0810a203a983b307686ffdb6、镜像快照均通过restic check --read-data。07:45 真实 launchd 后台审计退出码 0。d8bb18a0916fae5374125a7999125273f7bcdba6经源 CI run 3142 成功与独立交叉评审 PASS;正常合并提交012d06cf49425713b18df063fd7dbc8e0435fac8。从干净合并提交部署,备份任务现每小时 :30 触发。当天已验证则只做状态检查;当天本机备份待复制则先补复制;跨日旧失败不阻止新本机快照。守卫先恢复任何中断维护状态。launchctl kickstart验证新任务退出码 0,日志为PASS: current backup window already verified;前后 Gitea 启动时间、镜像与正式数据卷未变,未重复停服务。最终 Gitea/api/healthzHTTP 200、Runner online、备份/审计/守卫最近退出码 0。/Volumes/t5/gitea-restic-recovery/tools已从合并源码更新,9/9 文件 SHA256 校验通过;恢复目录根部 10 份非密钥回执和验收记录原子复制并核对 SHA256。旧版工具包保留在tools-before-012d06cf。本机回退目录/Users/brunogao/ops/gitea-reliability/deploy-before-20260926T000015Z。当前完整回执/Users/brunogao/ops/gitea-reliability/ACCEPTANCE-20260926.md。边界:最新快照已做 T5 全量读取校验,最近一次真正全量恢复/隔离服务验证对应前一个快照
d69b8becc5cd900ec967875424c087782837da20e1b8f82d9b5f7990901a772d。backup.key仍需本人将文件内容保存到 T5 以外的密码管理器并确认可取回;持续失败目前仅有本机日志,无主动告警;正式业务 workflow/Secrets/发布链尚未切换,GitHub 订阅未改变。