序言
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 命令更新一下数据库, 照做:
只要是五个 OK 就行, 至于第五步有个 Warning 和 Error, 那是这个仓库有问题, 没有传输完毕。
至此, 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
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了