Praktični vodič / vraćanje sigurnosne kopije VPS-a

Vraćanje sigurnosne kopije VPS-a u probnom okruženju

Sigurnosna kopija vrijedi tek kada znate šta obuhvata i možete je vratiti. Ova vježba pakuje dvije probne datoteke, provjerava SHA256, prenosi arhivu na drugi računar i vraća je u prazan direktorij. Ne mijenja aktivnu Nginx konfiguraciju.

· Ažurirano: · Čitanje: približno 5 min

Sadržaj vodiča

Pripremite odvojene terminale i opseg kopije

Koristite Bash, GNU tar, sha256sum i OpenSSH na Ubuntu, Linux ili WSL sistemu. Jedan terminal označite SERVER, drugi KLIJENT na odvojenom računaru. Zadržite iste terminale radi varijabli i zaustavite postupak pri svakoj grešci.

Podrazumijevani primjer pravi dvije zamjenjive datoteke u vašem home direktoriju i ne uključuje Nginx konfiguraciju. Ne traži root, ne mijenja firewall i ne raspakuje podatke preko aktivne stranice.

Za stvarnu aplikaciju napravite poseban popis sadržaja, uploads, redirects, uključenih konfiguracija, DNS-a i drugih zavisnosti. Vježba sa dvije datoteke nije potpuna kopija VPS-a.

SERVER: napravite privatni probni direktorij

Sljedeći blok pravi primjer HTML datoteke i neaktivne Nginx konfiguracije. Sačuvajte ispisanu putanju direktorija za kasniji prijenos.

umask 077
backup_lab=$(mktemp -d "$HOME/ubuntu-vps-backup.XXXXXX")
mkdir -p "$backup_lab/payload/site" "$backup_lab/payload/nginx" "$backup_lab/export"
printf '%s\n' '<!doctype html><html lang="en"><title>Restore drill</title><h1>Recovered static page</h1></html>' > "$backup_lab/payload/site/index.html"
printf '%s\n' 'server {' '    listen 8080;' '    server_name example.test;' '    root /var/www/first-site;' '}' > "$backup_lab/payload/nginx/first-site.conf"
printf 'Practice directory: %s\n' "$backup_lab"

Opcionalno, ako ste ranije pratili vodič za prvu statičku stranicu, narednim blokom zamijenite samo ove dvije probne datoteke kopijama odgovarajućih stvarnih datoteka. Preskočite ga ako koristite pripremljeni primjer.

install -m 600 /var/www/first-site/index.html "$backup_lab/payload/site/index.html"
install -m 600 /etc/nginx/sites-available/first-site "$backup_lab/payload/nginx/first-site.conf"

Prije kopiranja provjerite čitljivost i osjetljiv sadržaj. Za usklađenu verziju privremeno obustavite deployment dok kopirate. Ovaj opcionalni korak samo čita navedene aktivne datoteke; ne uključuje certifikate, privatne ključeve ili sve sistemske direktorije. Dodatne datoteke dodajte i popisu i manifestu.

SERVER: napravite arhivu i dvije provjere integriteta

Dok se pripremljene datoteke ne mijenjaju, napravite manifest sa relativnim putanjama, arhivu i njen kontrolni zbir.

(
    cd "$backup_lab/payload" &&
    sha256sum site/index.html nginx/first-site.conf > SHA256SUMS
)
tar -czf "$backup_lab/export/static-site.tar.gz" -C "$backup_lab/payload" site nginx SHA256SUMS
(
    cd "$backup_lab/export" &&
    sha256sum static-site.tar.gz > static-site.tar.gz.sha256
)
tar -tzf "$backup_lab/export/static-site.tar.gz"
printf 'Server export directory: %s\n' "$backup_lab/export"

Očekivani sadržaj obuhvata site/index.html, nginx/first-site.conf i SHA256SUMS. Vanjski kontrolni zbir provjerava arhivu, a unutrašnji provjerava bajtove vraćenih datoteka. Nijedan ne potvrđuje autentičnost ako napadač može zamijeniti i podatke i odgovarajuće zbirove.

KLIJENT: prenesite kopiju izvan VPS-a

U novom terminalu na odvojenom računaru koristite tačnu ispisanu serversku putanju kao remote_backup. Zamijenite placeholder, primjer IP adrese, korisnika i ključ. Ne nagađajte naziv direktorija napravljenog kroz mktemp.

umask 077
recovery_dir=$(mktemp -d "$HOME/ubuntu-vps-restore.XXXXXX")
remote_backup=/home/deploy/ubuntu-vps-backup.REPLACE/export
scp -i ~/.ssh/ubuntu_vps "deploy@203.0.113.10:$remote_backup/static-site.tar.gz" "$recovery_dir/"
scp -i ~/.ssh/ubuntu_vps "deploy@203.0.113.10:$remote_backup/static-site.tar.gz.sha256" "$recovery_dir/"

Prije SCP prijenosa pouzdano potvrdite host ključ; kod problema pratite SSH dijagnostiku. Ne zaobilazite provjeru identiteta.

SCP štiti prijenos, ali tar.gz arhiva sama nije šifrirana. Ograničite pristup odredištu i po potrebi šifrirajte podatke pri čuvanju. Drugi direktorij na istom VPS-u nije nezavisna kopija.

KLIJENT: provjerite arhivu i vratite je u nov direktorij

Prvo provjerite kontrolni zbir arhive. Očekujte OK; ako provjera ne uspije, prekinite i utvrdite uzrok. Ne prepisujte očekivani zbir da biste dobili prolaz.

(
    cd "$recovery_dir" &&
    sha256sum -c static-site.tar.gz.sha256
)
tar -tzf "$recovery_dir/static-site.tar.gz"

Tek za arhivu kojoj vjerujete napravite novi prazan direktorij i raspakujte je bez vraćanja tuđeg vlasništva. Sačuvajte stare datoteke, ne koristite sudo i ne raspakujte u korijen sistema.

restore_dir=$(mktemp -d "$recovery_dir/restored.XXXXXX")
tar -xzf "$recovery_dir/static-site.tar.gz" -C "$restore_dir" --keep-old-files --no-same-owner
(
    cd "$restore_dir" &&
    sha256sum -c SHA256SUMS
)
cat "$restore_dir/site/index.html"

Očekujte OK i za site/index.html i za nginx/first-site.conf te prikaz očekivanog naslova stranice. To potvrđuje sadržaj datoteka iz manifesta. Ne potvrđuje originalnog vlasnika, ACL, sve zavisnosti ili rad servisa.

Od datoteka do oporavljene aplikacije

Pregledajte vraćenu neaktivnu Nginx konfiguraciju: putanje, includes, module, dozvole i certifikate. Na zasebnoj zamjenskoj instanci provjerite nginx -t prije učitavanja, zatim vanjski HTTPS. Provjera postojeće aktivne konfiguracije ne dokazuje da vraćena kopija radi.

TLS certifikate ponovo izdajte ili vratite iz zasebne zaštićene kopije; ova arhiva ne sadrži privatne TLS ključeve. Za bazu podataka koristite postupak konzistentne kopije koji podržava baza, umjesto arhiviranja promjenjivih živih datoteka.

Snapshot ima vlastiti rok čuvanja, granice zajedničkog kvara i postupak oporavka. Samo njegovo postojanje ne dokazuje da imate nezavisan izvoz ili da možete obnoviti cijelu aplikaciju.

Zabilježite stvarno vrijeme i nedostajuće korake

RPO određuje prihvatljiv gubitak podataka u vremenu, a RTO ciljano vrijeme obnove. Primjeri od 24 sata za RPO i 60 minuta za RTO su ciljevi, ne rezultat ove vježbe. Dnevni raspored vrijedi samo ako su kopije uspješne i obnovljive.

Na manjem ekranu pomjerite tabelu vodoravno da vidite sve kolone.

ZapisŠta treba sačuvati
Kopija i izdanjeVrijeme, verzija aplikacije i popis sadržaja
Nezavisno odredišteLokacija, pristup i rok čuvanja
Kontrolni zbiroviRezultat vanjske i unutrašnje provjere
Početak i kraj oporavkaIzmjereno vrijeme svih potrebnih koraka
Nedostajuće zavisnostiBaza, certifikati, tajne, DNS ili raspoređeni zadaci
Vanjska provjeraHTTPS, funkcije aplikacije i najvažniji podaci

U ukupno vrijeme uključite kreiranje instance, pristup, certifikate i DNS, a ne samo raspakivanje arhive. Čuvajte više tačaka oporavka i upozorenja na neuspjele poslove. Plan resursa Linux VPS-a treba obuhvatiti prostor i opterećenje kopiranja.

Česta pitanja

Mogu li nakon vježbe obrisati originalne podatke?

Vraćajte u odvojeno okruženje i sačuvajte originale dok ne provjerite cijeli opseg potrebnog oporavka. Prolaz dvije probne datoteke nije dozvola za brisanje aktivne aplikacije.

Da li SHA256 dokazuje da ništa ne nedostaje?

Provjerava datoteke koje ste uključili u manifest. Ne otkriva zavisnosti koje nikada nisu kopirane i sam ne dokazuje autentičnost izvora.

Izvorna EN vježba sa probnim datotekama lokalno je provjerena u Git Bash okruženju na Windowsu sa GNU alatima. Time nisu testirani udaljeni Ubuntu host, SSH prijenos, aktiviranje Nginxa ili vanjski HTTPS. Bosanska verzija zadržava isti opseg i izvorne naredbe.

Službeni izvori

  1. Dokument 1: ubuntu.com
  2. Dokument 2: www.gnu.org
  3. Dokument 3: www.gnu.org
  4. Dokument 4: man.openbsd.org

Povezani vodiči