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"