Automatyczny backup świata Minecraft — pluginy, skrypty i dobre praktyki
Spalony dysk, nieudana aktualizacja, masowy grief — bez dobrych backupów łatwo stracić tygodnie pracy. Pokazujemy, jak ustawić automatyczne kopie zapasowe na Paperze i przez cron.
Backup to ta rzecz, której wartości nie docenisz, dopóki jej nie potrzebujesz. Spalony dysk, nieudana aktualizacja, masowy grief, przejęte konto operatora — bez kopii zapasowej każde z tych zdarzeń kończy się utratą tygodni pracy. Dobra wiadomość: w 2026 r. ustawienie automatycznych backupów to jednorazowa robota na 30 minut.
Pokazujemy trzy podejścia: pluginy Papera, skrypty bash z cronem i backupy przyrostowe restic.
Zasada 3-2-1
Branżowy standard:
- 3 kopie danych (oryginał + 2 backupy),
- 2 różne nośniki (np. dysk VPS i zewnętrzny storage),
- 1 kopia poza Twoją lokacją (S3, Google Drive, własny NAS).
Na serwerze Minecraft wygląda to tak: świat na VPS-ie + codzienna kopia lokalnie + cotygodniowa kopia na S3 / Google Drive.
Co tak naprawdę bekapować?
- folder świata (
world/,world_nether/,world_the_end/), plugins/— głównie konfiguracje i bazy danych SQLite,banned-players.json,whitelist.json,ops.json,server.properties,paper.yml,spigot.yml,bukkit.yml,- baza danych MySQL (jeśli używasz).
Nie kopiuj plików .jar Papera ani logów — łatwo je odtworzyć. Kopia świata to zwykle 80% rozmiaru backupu.
Opcja 1 — plugin EzBackup / BackupGuard
Najprostsze rozwiązanie. Konfigurujesz plik plugins/EzBackup/config.yml:
backup:
schedule: "0 4 * * *" # codziennie o 4:00
retention: 7 # trzymaj 7 ostatnich kopii
compress: true
destinations:
- type: local
path: backups/
- type: sftp
host: backup.mojhost.pl
user: mariusz
key: /root/.ssh/id_ed25519
path: /backups/mc/
Plus: zero dotykania konsoli, kompresja w locie, integracja z Discord webhookami. Minus: ograniczone do funkcji pluginu.
Opcja 2 — bash + cron
Klasyk. Plik /usr/local/bin/mc-backup.sh:
#!/usr/bin/env bash
set -euo pipefail
SERVER_DIR="/srv/minecraft"
BACKUP_DIR="/backups/minecraft"
DATE=$(date +%Y-%m-%d_%H-%M)
# Powiadom serwer i wymuś zapis
mcrcon -H 127.0.0.1 -P 25575 -p "TWOJE_HASLO" \
"say Rozpoczynam backup..." "save-off" "save-all flush"
# Skopiuj świat (tar + zstd, ~3x szybsze niż gzip)
tar --use-compress-program=zstd \
-cf "$BACKUP_DIR/world-$DATE.tar.zst" \
-C "$SERVER_DIR" world world_nether world_the_end
# Włącz zapis ponownie
mcrcon -H 127.0.0.1 -P 25575 -p "TWOJE_HASLO" \
"save-on" "say Backup zakończony."
# Usuń kopie starsze niż 7 dni
find "$BACKUP_DIR" -name 'world-*.tar.zst' -mtime +7 -delete
Następnie:
chmod +x /usr/local/bin/mc-backup.sh
crontab -e
Dodaj wpis:
0 4 * * * /usr/local/bin/mc-backup.sh >> /var/log/mc-backup.log 2>&1
Codziennie o 4:00 backup. Logi w /var/log/mc-backup.log. Plus: pełna kontrola, zero zależności od pluginów. Minus: trzeba znać bash.
Opcja 3 — restic (przyrostowe + szyfrowane)
restic robi backup przyrostowy: tylko zmienione bloki danych są zapisywane. Idealne dla świata Minecrafta, gdzie codziennie zmienia się 5–10% chunków.
apt install restic
export RESTIC_REPOSITORY="s3:s3.amazonaws.com/twoj-bucket"
export RESTIC_PASSWORD="dlugie-haslo-z-menedzera"
restic init
# Codzienny backup
restic backup /srv/minecraft/world
# Polityka retencji
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
Pierwszy backup może trwać kilkadziesiąt minut, kolejne — minuty. Restic szyfruje dane AES-256, więc nawet jeśli ktoś wykradnie kopię, nie odczyta świata bez hasła.
Testuj backup!
Niesprawdzony backup to brak backupu. Raz w miesiącu:
- Pobierz najnowszą kopię na lokalny komputer.
- Rozpakuj do osobnego folderu.
- Uruchom serwer testowy z tych plików.
- Sprawdź, czy świat ładuje się poprawnie.
Najczęstsze problemy: uszkodzone pliki regionów, brak level.dat, niepełna kopia podczas ataku DDoS w trakcie backupu.
Backup bez wyłączania serwera
Świat Minecrafta zapisuje się ciągle. Zwykłe cp może złapać niespójny stan. Klucz: save-off przed kopiowaniem i save-on po.
Komendy RCON:
save-off # zatrzymuje zapisy
save-all flush # wymusza pełen zapis na dysk
save-on # wraca do normalnej pracy
Między save-off a save-on serwer trzyma zmiany w pamięci. Backup w tym oknie jest spójny.
Powiadomienia o niepowodzeniach
Backup, który się nie wykonał i nikt o tym nie wie, jest gorszy niż brak backupu. Najprostsze rozwiązanie — webhook Discord:
if ! /usr/local/bin/mc-backup.sh; then
curl -X POST -H 'Content-Type: application/json' \
-d '{"content":"⚠️ Backup serwera nie powiódł się!"}' \
"$DISCORD_WEBHOOK_URL"
fi
Albo użyj Healthchecks.io — darmowy serwis, który dzwoni alarm, gdy cron przestał się odzywać.
Sugerowany harmonogram
- Co godzinę: snapshot świata na lokalny dysk (5–7 ostatnich).
- Codziennie 4:00: pełna kopia na zewnętrzny storage.
- Co tydzień: kopia poza lokację (S3, Google Drive).
- Co miesiąc: test odtworzenia.
Podsumowanie
Plugin to najszybszy start, bash + cron daje pełną kontrolę, restic zapewnia bezpieczeństwo i oszczędność miejsca. Niezależnie od wyboru — najważniejsza jest reguła 3-2-1, automatyczne powiadomienia o niepowodzeniach i regularny test odtworzenia.
30 minut na konfigurację dziś = brak paniki, gdy w przyszłym roku ktoś zgriefuje spawn albo VPS padnie.