Files
wecom_it_smart_desk/docs/SOPs/SOP-002-Gitea备份恢复.md
T
Simon 64d6812ec3 fix: P0遗留修复 + ADR/SOP文档
- requirements.txt: 添加 passlib[bcrypt] 依赖
- deploy-server/nginx.conf: /ws/ 路径添加 access_log off
- docs/ADRs/: 新增 4 个 ADR 决策记录
- docs/SOPs/: 新增 4 个 SOP 操作规程
2026-06-15 00:03:11 +08:00

2.2 KiB

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. 手动备份(应急)

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. 列出可用备份

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

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. 恢复到指定时间

# 看时间戳
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(待配)

# 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 升级脚本(已修)