备份和版本控制Minecraft服务器的Git替代方案。

7

目前我的Minecraft服务器在一个CentOS服务器上,使用Git作为版本控制和“灾难管理”的手段。这很有效,但存在两个问题:

  1. 文件太大。因为服务器有一个中央仓库、主分支(服务器实际运行的分支)和测试服务器分支,每一个提交的改变都会被记录下来,从而使SSD占用空间无限增长(过去1.5个月已经占用了约70GB的空间)。

  2. 速度慢。由于对象目录中存储了如此多的数据,提交、推送和拉取都很慢,因为它试图压缩/解压缩和解析所有这些数据。

我正在寻找一种解决方案,使Git更适合这个应用程序,或者使用替代方案。以下是我选择使用Git的一些原因:

  • 增量备份-每次备份时,我不必保存整个8GB未压缩/2GB压缩的服务器!
  • 挑选恢复-我需要能够轻松恢复服务器的某些部分(例如特定插件配置,而不需要恢复人们对主世界的更改)
  • 将项目克隆到家庭计算机以进行离线备份和测试
  • 为测试服务器创建一个分支,以在推出不稳定的功能之前尝试它们

当我们过去使用精确的tarballing bash脚本备份服务器时,通常删除超过2周的备份。通过增量备份,这个时间段应该是一个月或更长。

如果你对Minecraft的结构不熟悉,它的结构大致如下:

.
|-- plugins
    |-- SomePlugin
        |-- config.yml
    |-- SomePlugin.jar
|-- world
    |-- region
        |-- (binary files of chunks, a 2000x2000 world is often 1GB in size)
    |-- mcmmo_data (third party plugin)
        |-- x coordinate
            |-- y coordinate
                |-- small flatfile
    |-- level.dat
|-- stuff.txt
|-- properties.yml
|-- server.jar

有任何想法吗?

请提供Git服务器的硬件参数... - hovanessyan
4核AMD Bulldozer(3.6-3.8GHz);8GB RAM;128GB SSD;CentOS 6.3 x86_64 - Chris Watts
1
Git会存储生命周期历史记录,你真的想要这样吗?如果不想,备份程序可能更适合(例如Amanda)。 - fge
2
@hovanessyan 我们不一定需要插件的最新版本,而是需要能够在我们的服务器上运行的版本。此外,许多插件不支持Maven。 - Chris Watts
1
我使用 rdiff-backup 来实现类似的功能(虽然不是针对 Minecraft,但我所做的场景与你所做的非常相似)。这样做的好处是,你可以告诉它删除所有早于某个时间间隔的备份,同时使用增量存储来减少空间使用。 - twalberg
显示剩余2条评论
1个回答

2

你可以考虑使用git-annex来存储二进制/大文件,它被设计用于管理git内部的大对象。这将允许您将这些巨大的文件检入,而不会使中央git数据库混乱。但是,这需要重新考虑如何操作这些文件并让它们随时间变化。它确实有一个很好的推送/拉取/备份组件,可能会很好地工作,但是你将遇到其他需要处理的“新思维方式”。当然,首先在测试系统上尝试一下。


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