altbox.de

Batocera Savegame(s) Backup & Restore Scripts

Diese Seite stellt zwei Bash-Skripte bereit, mit denen du dein Batocera-System zuverlässig sichern und bei Bedarf vollständig wiederherstellen kannst. Ziel ist ein Setup, das im Alltag einfach läuft und dir im Ernstfall Sekunden bis Stunden an Spielzeit rettet.

Wichtig zum Setup: Die Skripte wurden in diesem Szenario auf einem Raspberry Pi 4 im selben Netzwerk ausgeführt, der sich per SSH mit Batocera verbindet und die Backups lokal speichert. Das System ist bewusst so gehalten, dass es ohne Cloud, ohne Drittanbieter und ohne Spezialsoftware funktioniert.

Prinzipiell lässt sich das Setup auch auf jedem anderen Linux-System oder einem NAS umsetzen, sofern SSH unterstützt wird. In dieser Dokumentation beziehe ich mich jedoch ausschließlich auf den Raspberry Pi 4 als Backup-Host.

Der Raspberry Pi 4 eignet sich hier besonders gut, da er in meinem Setup ohnehin dauerhaft durchläuft und sein System auf einer per USB angeschlossenen SSD liegt. Dadurch sind Backups schnell, stabil und unabhängig vom Batocera-System selbst.

Der weiter unten beschriebene Cronjob ist optional. Die Skripte lassen sich jederzeit auch manuell ausführen. Ich setze bewusst auf Automatisierung, damit Backups zuverlässig im Hintergrund entstehen, ohne dass man aktiv daran denken muss.

Die Skripte sind bewusst pragmatisch gebaut: kein GUI-Gefrickel, kein Cloud-Zwang, keine riesigen „alles sichern“-Backups, sondern gezielt nur das, was wirklich relevant ist: Savegames, Memorycards, Savestates und wichtige Konfigurationen.

Was ist enthalten?

save_batocera.sh: Was das Backup-Skript macht

save_batocera.sh verbindet sich per SSH mit Batocera und erstellt ein Snapshot-Backup unter $HOME/batocera/backups/YYYYMMDD_HHMMSS. Die Backups sind so gebaut, dass keine unnötigen Datenmengen wie Preview-PNGs von Savestates, Steam- oder Windows-Ordner oder Flatpak-Reste mitgesichert werden.

Gesichert werden unter anderem:

Um die Backupgröße im Griff zu behalten, werden Savestates pro Spiel begrenzt (standardmäßig nur die neuesten 5). Zusätzlich prüft das Skript, wann das letzte Backup erstellt wurde. Standardmäßig wird nur dann ein neues Snapshot erzeugt, wenn das letzte Backup älter als 7 Tage ist. Mit --force lässt sich das jederzeit überschreiben.

Backup-Retention

Es werden automatisch nur die letzten Backups behalten (standardmäßig 3 Snapshots). Ältere Backups werden selbstständig gelöscht, damit das Verzeichnis dauerhaft sauber bleibt.

Typischer Einsatz mit Cron

Das Skript kann problemlos alle 30 Minuten per Cron getriggert werden. Es erstellt trotzdem nicht permanent neue Backups, da es intern prüft, ob ein neues Snapshot notwendig ist.

*/30 * * * * /bin/bash $HOME/batocera/save_batocera.sh >/dev/null 2>&1

Manuelles Backup erzwingen:

/bin/bash $HOME/batocera/save_batocera.sh --force

recover_batocera_saves.sh: Was das Restore-Skript macht

recover_batocera_saves.sh listet vorhandene Snapshot-Backups auf, ermöglicht die Auswahl eines Backups und spielt dieses vollständig zurück nach Batocera. Dateien werden dabei konsequent überschrieben, um einen definierten Restore-Zustand sicherzustellen.

Wiederhergestellt werden:

Nach dem Restore rebootet Batocera automatisch nach einem kurzen Countdown, damit alle Änderungen sauber greifen.

Wichtige Hinweise

Konfiguration: Passwort und Hostname setzen

In beiden Skripten müssen vor der Nutzung die SSH-Zugangsdaten angepasst werden:

BATOCERA_HOST="batocera.local"
BATOCERA_USER="root"
BATOCERA_PASS="YOUR_PASSWORD_HERE"
BATOCERA_PORT="22"

Alternativ lassen sich die Skripte jederzeit auf SSH-Keys umbauen. Standardmäßig ist die Passwort-Variante gewählt, um ein sofort nutzbares Setup ohne zusätzliche Vorarbeit zu ermöglichen.

Downloads