Backups

Welten und Dateien persistenter Server sichern und wiederherstellen, von Hand oder nach Zeitplan.

Ein Backup, das du nie zurückgespielt hast, ist eine Hoffnung, kein Backup. Diese Seite ist kurz genug, um sie einmal mit einer Testgruppe durchzuspielen.

Was gesichert wird

Backups gelten für persistente Gruppen. Flüchtige Server werden bei jedem Start aus ihren Vorlagen neu gebaut, in ihnen gibt es also nichts, was sich aufzuheben lohnt.

groups/lobby.toml
persistent = true

[backup]
at = ["04:00"]
keep = 7

Zu jeder angegebenen Uhrzeit geht die Cloud die Verzeichnisse der Gruppe unter static/ durch, weist jeden laufenden Server an, seine Welt auf die Platte zu schreiben, legt pro Server ein tar.gz in backups/ ab und lässt den Server weiterlaufen. Das Schreiben ist wichtig: Paper hält die Hauptwelt im Arbeitsspeicher und schreibt level.dat erst, wenn es zum Speichern aufgefordert wird. Ein Archiv ohne diesen Schritt wäre unvollständig.

Das Archiv enthält das Serververzeichnis ohne cache, logs, libraries, versions, crash-reports und debug, die beim nächsten Start ohnehin wiederhergestellt werden. Sein Name enthält den Server und die Uhrzeit, zum Beispiel Lobby-1-20260923-040000.tar.gz.

keep legt fest, wie viele Archive pro Server erhalten bleiben. Die ältesten darüber hinaus werden nach jedem Lauf gelöscht. Mindestens eines bleibt immer, egal was du einstellst.

Von Hand

groups <name> backup            jetzt eins schreiben
groups <name> backup list       was vorhanden ist
groups <name> backup restore <file>   eins zurückspielen

Zurückgespielt wird nur auf einen Server, der nicht läuft. Weil die Cloud einen fehlenden persistenten Server sofort wieder startet, pausierst du die Gruppe vorher:

groups Lobby disable
service Lobby-1 stop
groups Lobby backup restore Lobby-1-20260925-040000.tar.gz
groups Lobby start

Das Archiv wird über das Verzeichnis des Servers entpackt. Vorhandene Dateien werden überschrieben, Dateien, die nicht im Archiv sind, bleiben. Es werden nur Dateinamen aus backup list angenommen, ein präparierter Name mit ../ kann also nicht außerhalb dieses Verzeichnisses schreiben.

Was das nicht leistet

Die Archive liegen auf derselben Platte wie die Server. Das schützt dich vor einer kaputten Welt, einem missglückten Plugin-Update und einem falschen Befehl, aber überhaupt nicht vor einem verlorenen Server. Kopiere backups/ regelmäßig auf einen anderen Rechner, zum Beispiel mit rsync oder restic von einem zweiten Server aus, der die Daten per SSH abholt.

Übe die Wiederherstellung einmal, solange nichts brennt. Leg eine Testgruppe an, schreib ein Backup, lösch etwas in der Welt, spiel das Backup zurück und schau dir das Ergebnis an. Zehn Minuten jetzt sind besser als eine Stunde Raten unter Druck.

Auf dieser Seite