欢迎光临!
若无相欠,怎会相见

Gitea 保留旧数据升级 1.22.6 版本

序言

2020 年的时候, 当时部署的 Gitea 是 1.12.1 版本的, 后来服务器过期了, 但是数据被我保留下来了。

前两天在 NAS 上安装了最新的 Gitea 1.22.6 版本, 想继续使用之前的数据, 因此进行一轮数据升级, 因为数据库结构更新了, 直接使用是有问题的。

数据迁移

首先要确保数据是可用的, 那么就在本地下载一个 1.21.1 版本的 Gitea, 使用之前保留的数据。 下载链接: https://github.com/go-gitea/gitea/releases/download/v1.12.1/gitea-1.12.1-windows-4.0-amd64.exe

完整的结构如上图所示。 其中修改一下 app.ini 文件, 在 custom/conf 里面。 因为调整过位置, 所以需要修改一下。

所有需要修改的东西, 如下:

RUN_USER = Administrator   # 改成你当前计算机用户

[database]
PATH     = E:\Gitea\Gitea-1.12.1\data\gitea.db  #改成当前实际路径 

[repository]
ROOT = E:/Gitea/Gitea-1.12.1/gitea-repositories           #改成当前实际路径 

[server]
LOCAL_ROOT_URL   = http://localhost:4000/           #改成本地 
HTTP_PORT        = 4000
ROOT_URL         = http://localhost:4000/
LFS_CONTENT_PATH = E:/Gitea/Gitea-1.12.1/data/lfs

[log]
ROOT_PATH = E:/Gitea/Gitea-1.12.1/log       #改成当前实际路径 

配置文件修改了上方的内容, 注意 database 的路径是 Windows 的路径分隔符, 其他路径改成了 Linux 上的路径分隔符。

然后在命令行执行 gitea doctor 命令检查一下 Gitea 状态:

接着直接运行 gitea, 然后访问设置的地址, 登录自己之前的账号, 检查一下数据是否正常。

经过检验, 我的数据是可用的, 还是 SQLite 数据备份过程简单, 只需要简单的复制就行, 重新搭建起来也是极为简单。

如此, 数据平滑迁移到本地, 而且能正常使用。

数据升级

接下来做数据升级。

经过实操, Gitea 的数据做的挺好, 可以直接从 1.12.1 升级到 1.22.6 版本, 这个是真的很赞。

先下载 Gitea 的 1.22.6 版本的 Windows 可执行程序, 其他平台类似。 下载链接: https://github.com/go-gitea/gitea/releases/download/v1.22.6/gitea-1.22.6-windows-4.0-amd64.exe

从刚刚的操作中拿取可用数据, 重新 copy 到一个新的地址

还是那些文件夹,custom 是配置文件, data 里面重要的是 lfs 里面的文件和 gitea.db 文件, gitea-repositories 是仓库文件很重要, log 就看自己喜好了。

先不要直接启动, 必然无法正常运行, 毕竟 gitea 迭代了这么久, 数据库的结构发生改变了。

使用 gitea 自带的 doctor 命令检测一下:

E:\Gitea\Gitea-1.22.6>gitea doctor check
2025/01/05 18:07:12 ...dules/setting/lfs.go:35:loadLFSFrom() [E] Deprecated config option `[server].LFS_CONTENT_PATH` is present, please use `[lfs].PATH` instead. This fallback will be/has been removed in v1.19.0

[1] Check paths and basic configuration
 - [I] Configuration File Path:    "E:\\Gitea\\Gitea-1.22.6\\custom\\conf\\app.ini"
 - [I] Repository Root Path:       "E:\\Gitea\\Gitea-1.12.1\\gitea-repositories"
Warning: can't remove temporary file: 'E:\Gitea\Gitea-1.12.1\gitea-repositories\doctors-order2761991904'
 - [I] Data Root Path:             "E:\\Gitea\\Gitea-1.22.6\\data"
Warning: can't remove temporary file: 'E:\Gitea\Gitea-1.22.6\data\doctors-order2920267000'
 - [I] Custom File Root Path:      "E:\\Gitea\\Gitea-1.22.6\\custom"
 - [I] Work directory:             "E:\\Gitea\\Gitea-1.22.6"
 - [I] Log Root Path:              "E:\\Gitea\\Gitea-1.12.1\\log"
Warning: can't remove temporary file: 'E:\Gitea\Gitea-1.12.1\log\doctors-order2310543225'
OK

[2] Check Database Version
 - [I] Expected database version: 299
 - [E] Error: migrate: Current database version 141 is not equal to the expected version 299. Please run "gitea [--config /path/to/app.ini] migrate" to update the database version during ensure up to date
ERROR

[3] Check if user with wrong type exist
OK

[4] Check if OpenSSH authorized_keys file is up-to-date
 - [E] Unable to regenerate authorized_keys file. ERROR: no such column: verified
ERROR

[5] Synchronize repo HEADs
 - [E] Error when fixing repo HEADs: no such column: default_wiki_branch
 - [I] All 0 repos have their HEADs in the correct state
ERROR

All done (checks: 5).

E:\Gitea\Gitea-1.22.6>

检查第二步的时候让我们用 migrate 命令更新一下数据库, 照做:

等它执行完毕, 再用 doctor 检查一遍。

只要是五个 OK 就行, 至于第五步有个 Warning 和 Error, 那是这个仓库有问题, 没有传输完毕。

现在可以运行 Gitea 并访问 Web 了。

至此, gitea 的数据已经升级完毕了

数据转移

接下来, 就可以继续使用这套数据, 将其上传到 NAS 上, 上传完毕后, 记得在 docker 里将数据的所有权修改为 1000:1000,  因为 docker 里面是以 git 用户权限运行的。 使用 chown 1000:1000 <文件>

使用 Gitea dump 命令备份当前本地数据, dump 之后会生成数据库的 SQL 文件, 到时候将用这个 SQL 文件生成 NAS 的 gitea.db, 也就实现了数据迁移。 当然最简单还是上传 db 文件。 本次就以 SQL 文件为例。

这次的迁移, 只需要 repos 里面的数据 和 gitea-db.sql 文件, 其他数据都不用

将 gitea 容器停止, 然后将 gitea 目录里面的 gitea.db 改名或删除。 执行如下命令生成 gitea.db 文件:

sqlite3 gitea.db < gitea-db.sql

等到运行完毕, 重新启用容器即可。

如果不能正常运行, 请修改相关权限:

原始权限:
root@DS423plus:/volume1/docker/gitea/gitea# ls -la gitea.db
-rw-r--r-- 1 1000 1000 2170880 Jan  5 19:02 gitea.db

重新上传:
root@DS423plus:/volume1/docker/gitea/gitea# ls -la gitea.db
-rw-rw-rw- 1 <nas user> users 8732672 Jan  5 19:25 gitea.db

执行如下命令修复:
root@DS423plus:/volume1/docker/gitea/gitea# chown 1000:1000 gitea.db
root@DS423plus:/volume1/docker/gitea/gitea# chmod 644 gitea.db
root@DS423plus:/volume1/docker/gitea/gitea# ls -la gitea.db
-rw-r--r-- 1 1000 1000 7798784 Jan  5 19:59 gitea.db

结语

以上操作, 对本人有效, 记录下来仅供参考。

如有错误, 敬请指出, 感谢指正!  —  2025-01-05  20:14:16

赞(0) 打赏
转载请注明:飘零博客 » Gitea 保留旧数据升级 1.22.6 版本
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎光临