备份和恢复 Gitea 服务器

在这些困难时期,任何事情都可能发生。

目录

需要备份以下内容:1) 数据库,2) 文件存储,3) 其他一些 Gitea 文件。现在开始。

打开的硬盘的非常棒的照片

测试 Gitea这篇文章中,我们安装了 Gitea 服务器。

何时

现在,作为对可能发生糟糕事情的预防措施,需要演练备份和恢复流程。

宁可备而无患,不可患而无备。

何处

Gitea 服务器的数据由三个部分组成:

  • 代码
  • 文件存储
  • 数据库

在我们的测试环境中,它们总共占用大约 700MB:

Gitea 磁盘使用情况

按照他们的建议,需要停止所有服务并一次性备份所有内容。

恢复时也应一次性完成。

如何 - 备份

cd ~/gitea-srv-local

# 备份数据库
sudo docker exec -t gitea-srv-local_db_1 bash -c 'pg_dump gitea -U gitea  --file=/var/lib/postgresql/backups/gitea-db-$(date +%Y-%m-%d).sql'

# 关闭 Gitea
sudo docker-compose down

# 检查备份文件夹
sudo ls postgres-backups

# 创建备份目录
mkdir gitea-backups

# 备份 Gitea 文件夹
sudo tar -zcvf gitea-backups/gitea-gitea-$(date +%Y-%m-%d).tgz gitea/gitea

# 备份 repos 文件夹
sudo tar -zcvf gitea-backups/gitea-git-$(date +%Y-%m-%d).tgz gitea/git

# 启动服务
sudo docker-compose up -d

最后一步是登录到另一台服务器,将备份文件夹拉取过去,或者进行更复杂的文件操作:

scp -r uname@gitea-srv-ip-addr:/home/uname/gitea-srv-local/gitea-backups ~/gitea-backups
scp -r uname@gitea-srv-ip-addr:/home/uname/gitea-srv-local/postgres-backups ~/postgres-backups

如何 - 恢复

实际上,这比上面提到的要复杂一些,特别是权限和钩子部分,但基本思路是一样的。

不过!请务必查看原始文档:https://docs.gitea.com/administration/backup-and-restore

# 首先安装
# 然后关闭服务
sudo docker-compose down

# 恢复文件
tar -zxvf gitea-git-___.tgz gitea/git
tar -zxvf gitea-gitea-___.tgz gitea/gitea

# 启动服务
sudo docker-compose up -d

# 这里进行一些 psql 或 pg_restore 操作
sudo docker exec -t gitea-srv-local_db_1 bash -c 'psql gitea -U gitea  --file=/var/lib/postgresql/backups/gitea-db-$(date +%Y-%m-%d).sql'

然后前往 UI 界面检查是否正常。

有用的链接