Hshen
人若无名 便可潜心练剑
GitHub Abou byHshen Hshen

Gitea Docker 备份与恢复指南

2025年7月19日

预计阅读:3min

Gitea Docker 备份与恢复指南

目录

重要提醒

备份前必须停止 Gitea 容器以确保数据一致性

备份操作

执行备份

# 1. 停止 Gitea 容器
docker stop gitea
 
# 2. 启动容器并执行备份
docker start gitea
docker exec -u git -it -w /tmp gitea /usr/local/bin/gitea dump -c /data/gitea/conf/app.ini
 
# 3. 复制备份文件到宿主机
docker cp gitea:/tmp/gitea-dump-*.zip ./backup/
 
# 4. 可选:再次停止容器(如果不需要立即使用)
# docker stop gitea

备份文件内容

  • app.ini - 配置文件
  • custom/ - 自定义文件
  • data/ - 数据目录(附件、头像、LFS等)
  • repos/ - Git 仓库
  • gitea-db.sql - 数据库转储

恢复操作

重要提醒

注意unzip gitea-dump-*.zip 解压后文件会直接释放到当前目录,建议先创建临时目录。

恢复步骤

# 1. 停止 Gitea 容器
docker stop gitea
 
# 2. 进入容器
docker exec --user git -it gitea bash
 
# 3. 创建临时目录并解压备份文件
mkdir -p /tmp/gitea-restore
cd /tmp/gitea-restore
unzip /path/to/gitea-dump-*.zip
 
# 4. 恢复数据和仓库
mv data/* /data/gitea/
mv repos/* /data/git/gitea-repositories/
 
# 5. 调整文件权限
chown -R git:git /data
 
# 6. 重新生成 Git Hooks
/usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks
 
# 7. 退出容器并重启
exit
docker start gitea

常见问题

权限错误

# 错误:Gitea is not supposed to be run as root
# 解决:以 git 用户运行
docker exec -u git -it gitea bash

权限拒绝

# 错误:permission denied
# 解决:使用 /tmp 目录
docker exec -u git -it -w /tmp gitea gitea dump -c /data/gitea/conf/app.ini

目录冲突

# 错误:Directory not empty
# 解决:备份原目录
mv /data/gitea/conf /data/gitea/conf.backup
mv ./data/conf /data/gitea/

检查数据

# 恢复后检查数据完整性
docker exec -u git -it gitea /usr/local/bin/gitea doctor check --all

自动化脚本

#!/bin/bash
# Gitea Docker 自动备份脚本
 
CONTAINER_NAME="gitea"
BACKUP_DIR="/backup/gitea"
DATE=$(date +"%Y%m%d_%H%M%S")
 
# 创建备份目录
mkdir -p $BACKUP_DIR
 
# 停止容器
docker stop $CONTAINER_NAME
 
# 启动容器并备份
docker start $CONTAINER_NAME
docker exec -u git -it -w /tmp $CONTAINER_NAME \
  /usr/local/bin/gitea dump -c /data/gitea/conf/app.ini
 
# 复制备份文件
docker cp $CONTAINER_NAME:/tmp/gitea-dump-*.zip $BACKUP_DIR/gitea-backup-$DATE.zip
 
# 清理旧备份(保留7天)
find $BACKUP_DIR -name "*.zip" -mtime +7 -delete
 
echo "备份完成:$BACKUP_DIR/gitea-backup-$DATE.zip"