还原备份仓库时提示无法读取此仓库下的git数据

无法读取此仓库下的 Git 数据。 联系此实例的管理员或删除此仓库。
参考文档:https://docs.gitea.cn/administration/backup-and-restore
基于最新版本的docker容器。
由于docker里没有service,所以修改完成后手动重启的docker。

我也出现了这个问题:

看一下我的另一篇帖子
Failed to restore the backup repository - Gitea Usages - Gitea

官方没有提供较好的docker容器下备份数据教程,大概是因为docker下可以直接备份数据,而不采用内部数据操作的方法。

我在用的备份和恢复脚本
backup.sh

#!/bin/bash

# 定义Gitea根目录和备份目录
GITEA_ROOT="/docker-data/gitea"
BACKUP_DIR="${GITEA_ROOT}/backups"
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
BACKUP_FILE="gitea-${TIMESTAMP}.tar.gz"

# 创建备份目录
mkdir -p "$BACKUP_DIR"

echo "停止Gitea容器..."
docker compose stop

echo "正在创建备份文件: $BACKUP_FILE"
tar -zcvf "${BACKUP_DIR}/${BACKUP_FILE}" -C "$GITEA_ROOT" config/ data/ mysql/

echo "启动Gitea容器..."
docker compose start

echo "备份完成! 备份文件保存在: ${BACKUP_DIR}/${BACKUP_FILE}"


gitea-restore.sh

#!/bin/bash

# 定义Gitea根目录和备份目录
GITEA_ROOT="/docker-data/gitea"
BACKUP_DIR="${GITEA_ROOT}/backups"

if [ $# -eq 0 ]; then
    echo "请指定要恢复的备份文件名。"
    echo "可用备份文件:"
    ls -l "$BACKUP_DIR" | grep gitea-.*\.tar\.gz
    exit 1
fi

BACKUP_FILE="$1"

if [ ! -f "${BACKUP_DIR}/${BACKUP_FILE}" ]; then
    echo "错误: 备份文件 ${BACKUP_DIR}/${BACKUP_FILE} 不存在!"
    exit 1
fi

echo "停止Gitea容器..."
docker compose stop

echo "正在恢复备份: $BACKUP_FILE"
# 备份当前数据
echo "备份当前数据..."
CURRENT_BACKUP="gitea-pre-restore-$(date +"%Y%m%d-%H%M%S").tar.gz"
tar -zcvf "${BACKUP_DIR}/${CURRENT_BACKUP}" -C "$GITEA_ROOT" config/ data/ mysql/

# 恢复备份
echo "删除旧数据并恢复备份..."
rm -rf "${GITEA_ROOT}/config" "${GITEA_ROOT}/data" "${GITEA_ROOT}/mysql"
tar -zxvf "${BACKUP_DIR}/${BACKUP_FILE}" -C "$GITEA_ROOT"

echo "启动Gitea容器..."
docker compose start

echo "恢复完成! 原数据已备份为: ${BACKUP_DIR}/${CURRENT_BACKUP}"

1 Like