Shell-Skripte für Minecraft-Server-Backups mit Fokus auf Streaming, Retry bei Dateiänderungen, optionalem SFTP-Upload und schneller Wiederherstellung.
backup_stream_retry.sh- Erstellt ein
tar.gz-Backup direkt als Stream (ohne große Zwischen-Datei). - Erkennt
file changed as we read itund hängt betroffene Dateien in Nachläufen erneut an. - Nutzt optional
pigzfür schnellere Kompression. - Drosselt CPU-/I/O-Last per
nice/ionice. - Optionaler Aufruf eines Upload-Skripts (verzögert) und lokale Aufbewahrungslogik.
- Erstellt ein
upload-latest-backup.sh- Lädt das neueste Backup per SFTP hoch (
lftp). - Protokolliert in ein Logfile.
- Löscht auf dem SFTP-Ziel das älteste Backup (außer dem gerade hochgeladenen).
- Lädt das neueste Backup per SFTP hoch (
recovery.sh- Interaktive Wiederherstellung eines Backups.
- Kann das neueste oder ein manuell gewähltes Backup einspielen.
- Leert vorher das Zielverzeichnis (Inhalt) und setzt anschließend optional den Besitzer.
- Linux-System mit Bash
- Standard-Tools:
tar,find,grep,sed,awk,sort,stat - Optional empfohlen:
pigz,ionice - Für Upload:
lftpmit SFTP-Unterstützung - Ausreichende Rechte für:
- Zugriff auf Server- und Backup-Verzeichnisse
- Schreiben in die konfigurierten Log-Dateien
- gegebenenfalls
chownbei Wiederherstellung
Alle Skripte enthalten feste Konfigurationsblöcke am Anfang. Passe mindestens folgende Werte an:
- In
backup_stream_retry.shSERVERVERZEICHNISBACKUP_VERZEICHNISUPLOAD_SCRIPTLOGFILE- optional:
RETENTION_DAYS,RETRY_BATCH,GZ_LEVEL,PIGZ_THREADS, Include-Listen
- In
upload-latest-backup.shBACKUP_VERZEICHNISSFTP_HOST,SFTP_PORT,SFTP_USER,SFTP_PASS,SFTP_REMOTE_DIRLOGFILE
- In
recovery.shZIELVERZEICHNISBACKUP_VERZEICHNIS- gegebenenfalls gewünschter Besitzer (
mc3im Skript)
Skripte ausführbar machen:
chmod +x backup_stream_retry.sh upload-latest-backup.sh recovery.shBackup erstellen:
./backup_stream_retry.shNeueste Datei per SFTP hochladen:
./upload-latest-backup.shBackup wiederherstellen (interaktiv):
./recovery.shTäglich um 04:30 Uhr Backup starten:
30 4 * * * /pfad/zu/backup-tools/backup_stream_retry.shHinweis: Das Backup-Skript startet den Upload (wenn konfiguriert) 15 Minuten verzögert im Hintergrund.
- Backup-Log: konfiguriert über
LOGFILEinbackup_stream_retry.sh - Upload-Log: konfiguriert über
LOGFILEinupload-latest-backup.sh
Bei Problemen zuerst prüfen:
- Pfade und Rechte
- verfügbare Abhängigkeiten (
pigz,lftp,ionice) - Erreichbarkeit des SFTP-Ziels
- ausreichend Speicherplatz im Backup-Verzeichnis
- In
upload-latest-backup.shwird das SFTP-Passwort aktuell im Skript gespeichert.- Für produktive Nutzung besser über sichere Mechanismen lösen (z. B. Umgebungsvariablen, Secret-Store, SSH-Key-basierter Zugriff).
recovery.shlöscht den Inhalt des Zielverzeichnisses vor dem Entpacken.- Nur mit korrektem
ZIELVERZEICHNISausführen.
- Nur mit korrektem