# SOP-002: Gitea 备份恢复标准作业流程 **适用**: 数据丢失应急 / 误操作回滚 / 异地迁移 **耗时**: 5-15 分钟 **关联**: [[Gitea部署指南]] §6/§7 --- ## 1. 备份策略 | 项 | 值 | 备注 | |---|---|---| | 频率 | 每天 3 点 | cron | | 保留 | 7 天 | 默认 | | 路径 | `/volume1/backups/gitea/` | NAS 本地 | | 异地 | OSS / COS 推 | M-1 风险,待解决 | | 工具 | `scripts/backup-gitea.sh` | 已写 | ## 2. 手动备份(应急) ```bash ssh simon@100.85.152.112 sudo bash /volume1/docker/wecom-it-desk/scripts/backup-gitea.sh ``` 输出: ``` [INFO] === Gitea 备份开始 === [OK] 备份配置 app.ini [OK] SQLite 热备完成 [OK] 仓库 tar 完成 [INFO] === 备份完成 === [OK] 最终备份: gitea-backup-20260615-030000.tar.gz ``` ## 3. 列出可用备份 ```bash ls -lh /volume1/backups/gitea/ # gitea-backup-20260614-180000.tar.gz 500M # gitea-backup-20260613-180000.tar.gz 495M # gitea-backup-20260612-180000.tar.gz 490M ``` ## 4. 恢复到 latest ```bash sudo bash /volume1/docker/wecom-it-desk/scripts/backup-gitea.sh --restore latest ``` **会做**: 1. 停 Gitea 套件 2. 解压备份 3. 覆盖 app.ini / SQLite / repos 4. 启动 Gitea 套件 ⚠️ 5 秒倒计时,Ctrl+C 取消 ## 5. 恢复到指定时间 ```bash # 看时间戳 ls /volume1/backups/gitea/ | grep gitea-backup # gitea-backup-20260614-180000.tar.gz # 恢复 sudo bash /volume1/docker/wecom-it-desk/scripts/backup-gitea.sh --restore 20260614-180000 ``` ## 6. 验证恢复 1. `http://100.85.152.112:8418/` → 登录 simon 2. 选仓 → 看 commit 历史 3. 验证仓裸仓库大小(`du -sh /volume1/@appdata/gitea/gitea/repos/`) 4. 验证 LFS 数据 ## 7. 异地推 OSS(待配) ```bash # NAS 装 rclone sudo apt install rclone # 或 synology 套件版 # 配 OSS rclone config # 选 aliyun OSS / 腾讯云 COS # 加 cron 0 4 * * * rclone copy /volume1/backups/gitea/ remote:gitea-backup/ --include "gitea-backup-*.tar.gz" ``` ## 8. 故障排查 | 现象 | 原因 | 解决 | |---|---|---| | 备份文件大小 0 | SQLite .backup 失败 | 改用文件复制模式(脚本已支持) | | 恢复后启动失败 | 数据不一致 | 试更早的备份 | | LFS 数据丢 | 备份脚本漏 LFS | 升级脚本(已修) |