Warum Wiederherstellungen in der Praxis scheitern
Prüfe vor einer Wiederherstellung diese Fehlerquellen:
- der Server läuft noch
- das falsche Zielverzeichnis wurde gewählt
- das Backup wird ohne Kompatibilitätsprüfung in einen anderen Softwarestand eingespielt
Bevor du Daten anfasst
Notiere drei Dinge:
- wo die Live-Daten aktuell liegen
- welches Backup du wirklich zurückspielen willst
- ob du den kompletten Serverzustand oder nur die Welt zurückrollen musst
Bei itzg/mc-backup ist das Live-Verzeichnis meist /data, der Standardpfad für Archive üblicherweise /backups.
Schritt 1: Den Server sauber stoppen
Spiele niemals über eine laufende Welt zurück.
Stoppe den Backup-Begleitcontainer und den Minecraft-Service über Compose:
docker compose stop backup mc
Compose sendet das normale Stoppsignal und verhindert, dass die Restart-Policy den Container sofort wieder hochfährt. Der gestoppte Backup-Begleitcontainer kann außerdem keinen neuen Job starten, während du sein Quellverzeichnis verschiebst. Heißt dein Service backups, verwendest du stattdessen diesen Namen.
Prüfe danach den Containerzustand:
docker compose ps
Schritt 2: Den aktuellen Zustand vor der Wiederherstellung sichern
Verschiebe das aktuelle Verzeichnis zur Seite, statt es zu überschreiben:
mv ./data ./data.pre-restore.$(date +%F-%H%M%S)
mkdir ./data
sudo chown 1000:1000 ./data
Damit behältst du einen Rückweg, falls du das falsche Backup erwischst. 1000:1000 ist die Standard-UID/GID des Containers; nutze die Werte aus deiner Compose-Datei, wenn du sie bewusst geändert hast.
Schritt 3: Die Wiederherstellung bewusst vorbereiten
Wenn du itzg/mc-backup nutzt, bringt das Image eigene Helfer für die Wiederherstellung mit.
Bei tar-basierten Backups arbeitet der aktuelle Helfer restore-tar-backup so:
- er stellt nur wieder her, wenn
/dataleer ist - er wählt die neueste Datei aus
/backups - er entpackt diese Datei nach
/data
Diese Sicherheitsprüfung ist nützlich, aber die automatische Auswahl reicht für einen Incident-Ablauf nicht. Gib dem Helfer ein Verzeichnis, das nur das bewusst gewählte Archiv enthält.
Schritt 4: In das richtige Ziel zurückspielen
Ergänze diesen ausschließlich für Recovery gedachten Service in der Compose-Datei. Durch das Profil startet er nicht bei einem normalen docker compose up:
services:
restore-backup:
profiles: ["recovery"]
image: itzg/mc-backup:latest
user: "1000"
restart: "no"
entrypoint: restore-tar-backup
volumes:
- ./data:/data
- ${RESTORE_SOURCE:-./restore-source}:/backups:ro
Liste die vorhandenen Archive auf und prüfe den Inhalt des ausgewählten Archivs, bevor du etwas entpackst:
ls -lht ./backups
tar -tf ./backups/AUSGEWAEHLTES_BACKUP.tar.gz | sed -n '1,40p'
Erstelle ein frisches Auswahlverzeichnis mit genau diesem Archiv und starte dann den Helfer:
restore_source="./restore-source-$(date +%F-%H%M%S)"
mkdir "$restore_source"
cp ./backups/AUSGEWAEHLTES_BACKUP.tar.gz "$restore_source"/
RESTORE_SOURCE="$restore_source" docker compose --profile recovery run --rm restore-backup
Der Befehl sollte den Namen des wiederhergestellten Archivs ausgeben. Erscheint No restore needed, war /data nicht leer. Brich dann ab, statt eine Wiederherstellung in bestehende Daten zu erzwingen.
Wenn du vorsichtiger vorgehen willst, restore zunächst nach ./data-restore-test und prüfe den Inhalt, bevor du produktiv umschaltest.
Schritt 5: Server starten und Ergebnis validieren
Server wieder hochfahren:
docker compose up -d mc
docker compose logs -f mc
Starte den Backup-Begleitcontainer erst wieder, wenn der wiederhergestellte Server erfolgreich geprüft wurde:
docker compose up -d backup
Prüfe drei Dinge:
- der Server startet ohne Welt- oder Region-Fehler
- die erwartete Welt und die wichtigen Spielerstände sind da
- der Ingame-Zustand passt zum gewählten Zeitpunkt
Bei wichtigen Servern solltest du nicht nur in die Logs schauen, sondern dich einloggen und gezielt einen bekannten Ort oder ein wichtiges Bauwerk prüfen.
Kompatibilitätschecks, die du nicht überspringen solltest
Eine Wiederherstellung ist nicht nur ein Dateikopiervorgang. Er hängt auch vom Software-Stack drumherum ab.
Prüfe:
- Minecraft-Version
- Server-Typ
- Plugins oder Mods, die Welt-Daten verändern
Stelle zuerst die Software-Versionen wieder her, mit denen das Backup erstellt wurde, und führe ein Upgrade danach als eigenen kontrollierten Schritt durch. Die aktuelle Paper-Migrationsdokumentation warnt außerdem, dass Unterschiede bei der Weltstruktur rund um 26.1 direkte Wechsel zwischen Paper und CraftBukkit/Spigot unsicher machen können. Kombiniere eine Notfall-Wiederherstellung nicht mit einer Migration des Server-Typs.
Häufige Fehler
| Symptom | Wahrscheinliche Ursache | Fix |
|---|---|---|
| Die Wiederherstellung macht scheinbar nichts | Zielverzeichnis war nicht leer | Ein bewusst leeres Zielverzeichnis vorbereiten |
| Welt crasht beim Start | Versions- oder Plugin-Mismatch | Softwarestand des Backups gegen die Zielumgebung prüfen |
| Falsche Welt kam zurück | Falsches Archiv ausgewählt oder unklare Backup-Namen | Namensschema und Retention klar standardisieren |
| Kein Rückweg nach gescheiterter Wiederherstellung | Aktueller Stand zu früh überschrieben | Vorher immer eine Kopie oder einen Snapshot anlegen |
FAQ
Sollte ich Wiederherstellungen auch testen, wenn gerade nichts kaputt ist?
Ja. Stelle ein Backup in einem separaten Verzeichnis wieder her und prüfe die Welt im Spiel.
Reicht es, nur den Weltordner zurückzuspielen?
Manchmal, aber nicht immer. Wenn Plugins wichtigen Zustand außerhalb des Weltordners unter /data halten, kann eine Teil-Wiederherstellung Inkonsistenzen erzeugen.
Nächste Schritte
- Wenn du noch keine automatisierten Backups hast, richte zuerst docker-mc-backup ein.
- Wenn du auf Hetzner hostest, verstehe die Grenzen von Infrastruktur-Snapshots im Hetzner-Snapshots-Guide.
- Für Serverbefehle vor und nach der Wiederherstellung nutze RCON und Konsole in Docker.