Skip to content

Gitea 迁移记录

华为云服务器即将到期,考虑到阿里云的服务器目前只部署了 Nginx,加一个 Gitea 服务完全没压力,所以需要迁移 Gitea 服务到阿里云,记录一下整个过程。


前言

  1. 为保障数据一致,停止 Gitea 使用(官方建议停止服务)
  2. 建议迁移前后保持相同版本

备份

一直使用的 docker 部署的 Gitea 服务,所以需要注意备份数据命令的执行以及备份数据存放的配置。

shell
docker exec -u git -it -w /data $(docker ps -qf 'name=^<Gitea容器名称>$') bash -c '/usr/local/bin/gitea dump' <容器内备份文件存放路径(默认 /data>

执行后会输出一段日志,最后在容器内指定目录下生成 gitea-dump-时间戳.zip 文件,里面包含 Gitea 的所有数据。

传输

将 Gitea 数据包上传至阿里云服务器,并解压。

shell
mkdir /tmp/gitea

unzip gitea-dump-时间戳.zip -d /tmp/gitea

安装 Gitea

在阿里云服务器上安装 Gitea,参考《Docker 安装 Gitea》,安装完后不要访问。

docker-compose.yml
yaml
version: '3'
services:
  charles7c-git:
    image: docker.gitea.com/gitea:1.24.5
    container_name: charles7c-git
    restart: always
    ports:
      - "3000:3000"
      - "222:22"
    volumes:
      - ~/docker/charles7c-git:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=mysql
      - GITEA__database__HOST=MySQL主机:MySQL端口
      - GITEA__database__NAME=MySQL数据库名
      - GITEA__database__USER=MySQL用户名
      - GITEA__database__PASSWD=MySQL密码

恢复

恢复仓库

shell
mkdir ~/docker/charles7c-git/git/repositories/

cd /tmp/gitea
mv repos/* ~/docker/charles7c-git/git/repositories/

恢复配置

shell
mv -f data/* ~/docker/charles7c-git/gitea/

恢复数据库

使用 Navicat 执行 SQL 脚本初始化表和数据。

调整文件权限

shell
docker exec -u git -it charles7c-git bash

chown -R git:git /data

重新生成钩子

shell
docker exec -u git -it charles7c-git bash

/usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks

重启 Gitea

shell
docker restart charles7c-git

访问 Gitea

访问及验证,如有问题,可再自行检查 app.ini 配置。

参考资料

  1. Gitea 官方文档 - 备份与恢复:https://docs.gitea.com/zh-cn/administration/backup-and-restore