Gitea 备份与恢复

2025-12-07 14:10   110   0  

备份命令 (dump)

先转到 git 用户的权限: su git. 再 Gitea 目录运行 ./gitea dump。一般会显示类似如下的输出:

2016/12/27 22:32:09 Creating tmp work dir: /tmp/gitea-dump-417443001
2016/12/27 22:32:09 Dumping local repositories.../home/git/repositories
2016/12/27 22:32:22 Dumping database...
2016/12/27 22:32:22 Packing dump files...
2016/12/27 22:32:34 Removing tmp work dir: /tmp/gitea-dump-417443001
2016/12/27 22:32:34 Finish dumping in file gitea-dump-1482906742.zi
p
最后生成的 gitea-dump-1482906742.zip 文件将会包含如下内容:
  • app.ini - 如果原先存储在默认的 custom/ 目录之外,则是配置文件的可选副本

  • custom/ - 所有保存在 custom/ 目录下的配置和自定义的文件。

  • data/ - 数据目录(APP_DATA_PATH),如果使用文件会话,则不包括会话。该目录包括 attachmentsavatarslfsindexers、如果使用 SQLite 则包括 SQLite 文件。

  • repos/ - 仓库目录的完整副本。

  • gitea-db.sql - 数据库 dump 出来的 SQL。

  • log/ - Logs 文件,如果用作迁移不是必须的。

中间备份文件将会在临时目录进行创建,如果您要重新指定临时目录,可以用 --tempdir 参数,或者用 TMPDIR 环境变量。

备份数据库

gitea dump 创建的 SQL 转储使用 XORM,Gitea 管理员可能更喜欢使用本地的 MySQL 和 PostgreSQL 转储工具。使用 XORM 转储数据库时仍然存在一些问题,可能会导致在尝试恢复时出现问题。

# mysql
mysqldump -u$USER -p$PASS --databases $DATABASE > gitea-db.sql
# postgres
pg_dump -U $USER $DATABASE > gitea-db.sql

恢复命令 (restore)

当前还没有恢复命令,恢复需要人工进行。主要是把文件和数据库进行恢复。

例如:

unzip gitea-dump-1610949662.zip
cd gitea-dump-1610949662
mv app.ini /etc/gitea/conf/app.ini
mv data/* /var/lib/gitea/data/
mv log/* /var/lib/gitea/log/
mv repos/* /var/lib/gitea/repositories/
chown -R gitea:gitea /etc/gitea/conf/app.ini /var/lib/gitea

# mysql
mysql --default-character-set=utf8mb4 -u$USER -p$PASS $DATABASE <gitea-db.sql
# sqlite3
sqlite3 $DATABASE_PATH <gitea-db.sql
# postgres
psql -U $USER -d $DATABASE < gitea-db.sql

service gitea restart

如果安装方式发生了变化(例如 二进制 -> Docker),或者 Gitea 安装到了与之前安装不同的目录,则需要重新生成仓库 Git 钩子。

在 Gitea 运行时,并从 Gitea 二进制文件所在的目录执行:./gitea admin regenerate hooks

这样可以确保仓库 Git 钩子中的应用程序和配置文件路径与当前安装一致。如果这些路径没有更新,仓库的 push 操作将失败。


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。