OpenBagTwo's Project Hub
August 9, 2023

Game Save Backup

Posted on August 9, 2023  •  3 minutes  • 526 words
Table of contents

https://openbagtwo.github.io/gsb/

This is an idea that dates back over a year and a half to when I was doing stupidly risky things being experimental in my Minecraft surival world and getting frustrated at just how long and painful it was to create—and later restore—backups of my world.

Incremental backups definitely seemed like the way to go, but the main version control system I was familiar with was Git , and isn’t that kind of overkill for this situation? Especially when I’m dealing with large binary blobs?

Well, after 18 months of dogfooding, the conclusion I reached was no! Git is actually really great at quickly generating snapshots of my ~7GB of world files*, and it’s been pretty great, not just for pretending like I didn’t just fall into the void and lose all my enchanted gear, but also for rewinding to a backup I took months or years ago, recording some footage or poking around in an old world, and then fast forwarding back to the present.

This workflow also integrates really well with EnderChest , as I have a “chest” set up on a single file server with a lot of disk space where I can keep my backups centralized, pushing out restores to any specific instances I want to check them out on.

The one thing that wasn’t working out about my git-based backup scheme was explaining it to others. I’d be interacting with people frustrated with Steam deleting their cloud saves and telling them, “why not just manage it yourself with Git?” and they’d remind me just how intimidating Git can be for newcomers. So that was the persona I had in mind, first in foremost, when developing what is essentially little more than yet another Git wrapper (I did actually consider whether gitless would do what I wanted but concluded that there was still a niche for a tool to directly cater to the gamesave backup workflow).

As it stands, gsb just hit “steel thread” pre-MVP status today with four operations:

  1. gsb init is the equivalent of git init while also performing the first backup
  2. gsb backup runs git add . && git commit (and optionally a git tag at the end)
  3. gsb history is a friendly summation of one’s git history
  4. git rewind restores a backup via a combination of git resets, git checkouts and gsb backups in order to keep the history nice and linear

I’ve got plenty of roadmap ahead (including direct integration with EnderChest , and this might be the project that finally gets me to make a GUI so that this can really find an audience on platforms where typing in commands is just a pain in the toucans.

*After 18 months and 424 revisions, my .git folder is sitting at 48GB in size, which probably mainly means I could do with some interactive rebasing

Installation

The gsb package is available on PyPI

Full installation instructions can be found on GitHub Pages , though I’ve recently discovered the joys of pipx and honestly might switch to using it for everything!

License

This project–the executable, source code and all documentation–are published under the GNU Public License v3 .

Social Media

Where else you can find me