Skip to content
VDS · Bekapi i disk

Probni oporavak: proveri bekape unapred

Kako da sprovedeš probni oporavak, šta da zabeležiš kao rezultat i koja se tipična iznenađenja otkriju samo na vežbama, a ne u pravoj katastrofi.

Ažurirano 23. avgust 2026.

Bekap iz kog nikada nisi vraćao podatke nije bekap — to je nada. Probno vraćanje traje sat vremena jednom u tri meseca i pretvara nadu u proverenu činjenicu.

Šta proveriti

Tri pitanja na koja moraš imati odgovore pre incidenta:

  1. Potpunost. Da li bekap sadrži sve što je potrebno za pokretanje: podatke, podešavanja, ključeve, sertifikate, raspored.
  2. Čitljivost. Da li se arhiva otvara, da li se dump baze vraća bez grešaka.
  3. Vreme. Koliko će sati trajati potpuno vraćanje. Taj broj moraš znati unapred, a ne da ga otkriješ pod pritiskom.

Kako izvesti probu

Najiskrenija opcija je na odvojenoj mašini, ne na produkcionoj. Uzmi VDS-1 na mesec dana, vrati na njega sve od nule i meri vreme.

export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic"
export RESTIC_PASSWORD_FILE=/root/.restic-pass

restic snapshots
restic restore latest --target /restore
ls -la /restore

Vrati bazu:

docker compose up -d db
gunzip -c /restore/var/backups/db.sql.gz | docker compose exec -T db psql -U postgres app
docker compose exec -T db psql -U postgres app -c "select count(*) from users;"

Pokreni aplikaciju i otvori je u pregledaču — to je poslednji korak. Dok se stranica ne otvori, vraćanje se nije dogodilo.

Lakša opcija koja je takođe korisna: vrati samo bazu u odvojen kontejner na istoj mašini i uveri se da su podaci tu i sveži.

Proveri ne samo da je raspakivanje uspelo, već i datum podataka. Bekap koji se pouzdano pravi, ali je pre mesec dana prestao da uključuje potreban direktorijum, u listi snimaka izgleda potpuno normalno. Uporedi broj zapisa u tabelama i vremenske oznake najnovijih fajlova.

Šta obično ispliva

  • Fajl .env je zaboravljen. Podaci su tu, ali lozinke za njih nisu.
  • Sertifikati su zaboravljeni. Sajt se podigne, ali ne odgovara preko HTTPS-a.
  • Raspored je zaboravljen. Sve radi, ali bekapovi se više ne prave — a to otkriješ mesec dana kasnije.
  • Redosled pokretanja nije zapisan. Aplikacija se pokrene pre baze i padne.
  • Lozinka repozitorijuma bila je samo na izgubljenoj mašini. Bekapovi postoje, ali nema pristupa do njih.
  • Vraćanje traje deset sati, ne dva. Propusni opseg prijema ili disk, vidi brzina diska.

Zapiši redosled

Na osnovu probe napiši kratko uputstvo i drži ga van mašine:

  1. Naruči mašinu istog ili većeg ranga — provisioning traje oko minut.
  2. Instaliraj Docker i vrati /opt/myapp iz bekapa.
  3. Vrati dump baze, proveri broj zapisa.
  4. Vrati /etc/nginx i sertifikate, podigni web server.
  5. Usmeri domen na novu adresu.
  6. Vrati raspored iz crontab.txt.
  7. Proveri: sajt se otvara, prijava radi, bekapovi se ponovo prave.

Tačka 5 je najpotcenjenija. DNS zapisi se ne ažuriraju trenutno, pa unapred spusti TTL zapisa na 300 sekundi ako uopšte računaš na migraciju.

Koliko često

Jednom u tri meseca za produkcione servise, jednom u šest meseci za sve ostalo. Plus uvek posle svake veće promene: nova baza, novi servis, premeštanje direktorijuma. Upiši probu u kalendar, inače se nikada neće dogoditi.

Šta treba da bude u bekapu — šta tačno bekapovati. Gde ga čuvati — bekapovi van lokacije. Ako se incident već dogodio — podaci su izgubljeni.