目前我的Minecraft服务器在一个CentOS服务器上,使用Git作为版本控制和“灾难管理”的手段。这很有效,但存在两个问题:
文件太大。因为服务器有一个中央仓库、主分支(服务器实际运行的分支)和测试服务器分支,每一个提交的改变都会被记录下来,从而使SSD占用空间无限增长(过去1.5个月已经占用了约70GB的空间)。
速度慢。由于对象目录中存储了如此多的数据,提交、推送和拉取都很慢,因为它试图压缩/解压缩和解析所有这些数据。
我正在寻找一种解决方案,使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
有任何想法吗?
rdiff-backup
来实现类似的功能(虽然不是针对 Minecraft,但我所做的场景与你所做的非常相似)。这样做的好处是,你可以告诉它删除所有早于某个时间间隔的备份,同时使用增量存储来减少空间使用。 - twalberg