Hi Hytaler,
Do this one today, not the day after you've lost a world. Your world is the one thing on the server you can't redownload — server files, mods, configs are all replaceable in minutes; three weeks of player builds are not. So back it up, automatically, off the box. Everyone agrees with this right up until the disk dies and they find out their "backup" was a folder on the same dead disk.
A nightly tarball on a cron is thirty seconds of work and puts you ahead of the majority:
That's it. Runs at 4am, datestamped file, gzip'd. It's not clever and it doesn't need to be.
The one real gotcha: tar-ing a live world mid-write can hand you a corrupt, half-saved archive that looks fine until you try to restore it. Two ways around it:
For a small server the brief 4am downtime is invisible and the consistency is worth it.
A backup on the same machine as the thing it's backing up is not a backup — it's a slightly newer copy waiting to die with everything else. Push it somewhere else.
Encrypted means you can park it on cheap storage without trusting the provider with your data. The
A backup you've never restored is a guess. Pull yesterday's archive into a throwaway directory and check the world actually loads from it — once, now, while nothing's on fire.
Backups are the last line of the hardening list — non-root, firewall, SSH keys, fail2ban, patched, and backed up. Skipping the last one is how a single bad mod update or a fat-fingered
Do this one today, not the day after you've lost a world. Your world is the one thing on the server you can't redownload — server files, mods, configs are all replaceable in minutes; three weeks of player builds are not. So back it up, automatically, off the box. Everyone agrees with this right up until the disk dies and they find out their "backup" was a folder on the same dead disk.
Table of Contents
- The dumb version that beats most people
- Don't copy a world that's being written
- Get it off the box
- Test a restore once
- Where backups fit
1. The dumb version that beats most people
A nightly tarball on a cron is thirty seconds of work and puts you ahead of the majority:
Code:
0 4 * * * tar czf /backups/hytale-$(date +\%F).tar.gz /opt/hytale/server/world
That's it. Runs at 4am, datestamped file, gzip'd. It's not clever and it doesn't need to be.
2. Don't copy a world that's being written
The one real gotcha: tar-ing a live world mid-write can hand you a corrupt, half-saved archive that looks fine until you try to restore it. Two ways around it:
- Back up during a quiet window (4am exists for a reason), or
- Stop the server for the few seconds the copy takes:
Code:
sudo systemctl stop hytale
tar czf /backups/hytale-$(date +%F).tar.gz /opt/hytale/server/world
sudo systemctl start hytale
For a small server the brief 4am downtime is invisible and the consistency is worth it.
3. Get it off the box
A backup on the same machine as the thing it's backing up is not a backup — it's a slightly newer copy waiting to die with everything else. Push it somewhere else.
restic is my go-to: deduplicated, encrypted, talks to object storage out of the box.
Code:
restic -r s3:s3.example.com/hytale-backups backup /opt/hytale/server/world
restic -r s3:s3.example.com/hytale-backups forget --keep-daily 7 --keep-weekly 4 --prune
Encrypted means you can park it on cheap storage without trusting the provider with your data. The
forget --prune line is what stops backups eating infinite disk. I wrote up the full encrypted restic setup on my blog if you want the whole thing.4. Test a restore once
A backup you've never restored is a guess. Pull yesterday's archive into a throwaway directory and check the world actually loads from it — once, now, while nothing's on fire.
Code:
mkdir /tmp/restore-test
tar xzf /backups/hytale-2026-06-14.tar.gz -C /tmp/restore-test
ls /tmp/restore-test/world # actual files in there? good.
5. Where backups fit
Backups are the last line of the hardening list — non-root, firewall, SSH keys, fail2ban, patched, and backed up. Skipping the last one is how a single bad mod update or a fat-fingered
rm ends a community. Don't be the cautionary tale in someone else's guide.
Last edited: