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:
- gsb initis the equivalent of- git initwhile also performing the first backup
- gsb backupruns- git add . && git commit(and optionally a- git tagat the end)
- gsb historyis a friendly summation of one’s- git history
- git rewindrestores 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 .
 
