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

CJx*_*JxD 6 git bash backup scripting minecraft

目前,我的Minecraft服务器位于CentOS服务器上,使用Git作为版本控制和"灾难管理"的手段.除了两个问题之外,这非常有效:

  1. 它很大.因为服务器有一个中央存储库,主分支(服务器实际运行在其上)和一个测试服务器分支,每个包含所有已提交的更改,使SSD无需填充(使用过去1.5个月大约70GB) )

  2. 这很慢.在对象目录中存储了如此多的数据之后,提交,推送和拉取的速度很慢,因为它尝试压缩/解压缩并解析所有这些数据.

我正在寻找一种解决方案,让Git对这个应用程序或替代品更有效.以下是我选择使用Git的一些原因:

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

当我们过去使用精确的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
Run Code Online (Sandbox Code Playgroud)

任何人的想法?

Wes*_*ker 2

为了存储二进制/大文件,您可能会考虑的一种选择是git-annex,它是为管理 git 内部的大对象而设计的。它可以让你签入那些巨大的文件,而不会弄乱中央 git 数据库本身。但是,这需要重新思考如何处理这些文件并让它们随着时间的推移而改变。它确实有一个很好的推/拉/备份组件,可能会很好地工作,但是您将遇到需要处理的其他“新思维方式”。当然,首先在测试系统上尝试一下。