GitLab备份不包括维基。

9
我们在服务器上安装了GitLab CE 9.1.2,并计划每周一至周五晚上8点运行备份。目前一切正常,但昨天我们开始使用Wiki。我仔细检查了备份文件,但它的大小与前一天的备份完全相同(系统中除了创建Wiki页面之外没有其他操作)。
因此,我怀疑Wiki没有包含在备份过程中,于是我打开了一个虚拟机并尝试恢复备份文件。操作成功后,我转到项目的Wiki部分,但却发现它是空的。
我阅读了一些资源,它们说如果要包含Wiki,则存储库不应为空,但我们的存储库已经充满了代码、提交、分支、问题等。我按照备份说明进行操作,因为这就是我们所拥有的“Omnibus”安装程序。
0 20 * * 1-5 /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

如您所见,我并没有包含任何SKIP环境变量,因此它不应该跳过任何内容。我是否遗漏了什么?我已经正确按照说明操作。我需要对系统进行完整的备份。


2
仅仅3个月前就有一个bug文件:一些存储库(特别是维基)被跳过备份,但它们并不为空 - fedorqui
所以我想知道为什么这个 bug 不被认为是重大的 bug?已经 3 个月了,还是没有修复吗? - dokgu
2
同意,实际上这不是第一次:3年前在$repo.wiki未备份,当$repo为空且被跳过时有人说_这应该是高优先级的,不能在报告后3个月内出现,并且已经发布了3个版本。_ - fedorqui
1个回答

6
从@fedorqui提供的链接来看,这似乎是缓存未刷新导致在创建Wiki时备份进程将Wiki视为空白而被跳过的问题。
为了解决这个问题,看起来我们需要手动清除缓存。
sudo gitlab-rails console
p = Project.find_by_full_path 'namespace_path/project_path'
wiki = ProjectWiki.new p
wiki.repository.empty?
wiki.repository.expire_all_method_caches
wiki.repository.empty?

第一次运行wiki.repository.empty?时,它将返回true,这就是备份过程跳过Wiki的原因。在运行wiki.repository.expire_all_method_caches之后,您应该可以顺利进行(我尝试了这个方法,我们的Wiki现在正在备份中)。如果您想确认一切是否正常,请再次运行wiki.repository.empty?,这次它应该返回false
截至2017年6月5日,似乎该漏洞尚未修复。

更新(2017年8月22日)

GitLab CE 9.5.0已发布(变更日志),其中包含此问题的修复。如果您不想手动过期缓存,我建议您将GitLab安装升级至至少v9.5.0,您应该就没问题了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接