 joywayerandClaude Opus 5
|
9be05edc9a
|
gitea 备份与升级脚本缺陷修复
backup.sh:
- 备份产出后校验完整性(gzip、mysqldump 结束标记、建表数、tar 清单),
校验不通过即中止,且不清理旧备份
- 清理只删自有文件名、按备份集整组判断、保底保留 3 份,
不再误删 upgrade.sh 的 pre-upgrade-* 回滚锚点与无关文件
- 密码改用 MYSQL_PWD 传递,不再出现在进程命令行
- 新增 --cold(停 Gitea 取一致快照,MySQL 不停)与 --verify-last
- 备份包含 SSH host key 与 JWT 签名密钥,权限收紧为 600
- 补充 root/依赖/磁盘预检与 flock 防 cron 并发
upgrade.sh:
- 修复 curl 状态码被拼接成 000000,导致 wait_healthy 误判就绪。
该缺陷曾使一次正常的数据库迁移被误杀并触发回滚
- SSH 检测改为按行读 banner;head -c 会阻塞到超时,
把健康的服务误报成故障
- 跨小版本升级若迁移版本未前进则判定失败,
避免迁移根本没执行却报告成功
- 健康检查端口参数化 GITEA_HTTP_PORT(默认 3000),
避免探测到其它实例而验证了错误的对象
- 回滚后提示 .env 已钉在只存在于本机的镜像标签上,并给出解绑方法
- 清理回滚镜像的建议补充说明:删除后 --rollback 会失效
- 数据备份包权限收紧为 600
- 容量显示不再把 780KB 显示成 0MB
验证:生产 1.25.5 → 1.27.1 升级完成,数据逐项核验一致;
隔离沙箱完整演练升级与 --rollback,回滚后数据精确还原。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-05 23:49:01 +08:00 |
|