Gitea 迁移记录
华为云服务器即将到期,考虑到阿里云的服务器目前只部署了 Nginx,加一个 Gitea 服务完全没压力,所以需要迁移 Gitea 服务到阿里云,记录一下整个过程。
前言
- 为保障数据一致,停止 Gitea 使用(官方建议停止服务)
- 建议迁移前后保持相同版本
备份
一直使用的 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》,安装完后不要访问。
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
配置。
参考资料
- Gitea 官方文档 - 备份与恢复:https://docs.gitea.com/zh-cn/administration/backup-and-restore