Praktični vodič / Kopija i povrat datoteka

Sigurnosna kopija VPS-a i provjera vraćenih datoteka

Sigurnosna kopija VPS-a korisna je tek kada je možete dohvatiti izvan poslužitelja i vratiti očekivane datoteke. U ovoj vježbi arhivirate statičnu stranicu i jednu Nginx konfiguraciju, prenosite ih na drugo računalo i provjeravate sadržaj u novom direktoriju.

· Ažurirano · Oko 5 min čitanja

Sadržaj vodiča

Odredite opseg vježbe

Koristimo Bash, GNU tar, sha256sum i OpenSSH na Ubuntu sustavu ili Linux/WSL klijentu. Serverske naredbe izvodite u jednom terminalu servera, a klijentske u jednom terminalu zasebnog računala. Ostavite ih otvorene zbog varijabli. Nakon pogreške zaustavite postupak.

Počinjemo s dvije privremene datoteke u matičnom direktoriju. Ne mijenjamo Nginx, vatrozid ni aktivni sadržaj, a raspakiravanje ne pokrećemo kao root. Cijeli web može zahtijevati dodatne datoteke, preusmjeravanja, DNS, certifikate i druge usluge. Dvije datoteke nisu kopija cijelog stroja.

Pripremite datoteke bez promjene weba

Na serveru stvorite privatni direktorij za vježbu. Konfiguracija je tekst za arhiviranje, ne uključuje se u uslugu.

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"

Neobvezno: za stvarnu stranicu iz HTTPS vodiča zamijenite samo privremene kopije sljedećim naredbama. Oba izvora moraju biti čitljiva vašem računu. Pregledajte konfiguraciju radi tajnih podataka i privremeno zaustavite objave kako bi datoteke pripadale istoj verziji. Za ogledne datoteke preskočite ovaj blok.

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"

Naredbe samo čitaju aktivne izvore. Ne kopiraju privatne certifikate ni cijele sistemske direktorije. Potrebne dodatne datoteke svjesno dodajte u popis i manifest kontrolnih zbrojeva.

Izradite arhivu i dvije razine provjere

Na serveru izračunajte zbrojeve odabranih datoteka, izradite arhivu s relativnim putanjama i zatim izračunajte zbroj arhive. Dok postupak traje, ne mijenjajte sadržaj.

(
    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"

Popis treba sadržavati site/, nginx/, dvije odabrane datoteke i SHA256SUMS. Zbroj arhive otkriva promjenu pri prijenosu, a manifest provjerava raspakirane datoteke. Hash ne dokazuje autentičnost ako netko može zamijeniti i podatke i očekivani zbroj.

Prenesite kopiju na drugo računalo

Na klijentu postavite remote_backup na točan izvozni direktorij koji je ispisao server. Zamijenite adresu, račun i ključ radnim SSH podacima. 203.0.113.10 je dokumentacijska adresa, a REPLACE nije stvarni nastavak direktorija koji stvara 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 prihvaćanja novog stroja provjerite host otisak pouzdanim putem. Ako ne radi veza, koristite SSH dijagnostiku. Ne isključujte provjeru identiteta radi prijenosa.

SCP štiti prijenos putem SSH-a. Sama tar.gz datoteka komprimirana je, ali nije šifrirana. Zaštitite odredišni račun i pohranu, uz šifriranje u mirovanju kada to podaci zahtijevaju. Drugi direktorij na istom VPS-u nije kopija izvan servera.

Provjerite arhivu pa vratite datoteke u novi direktorij

Na klijentu prvo provjerite arhivu. Nastavite samo uz rezultat OK. Kod neuspjeha istražite ili ponovite prijenos; ne prepisujte očekivani zbroj da biste sakrili razliku.

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

Pouzdanu arhivu raspakirajte u nov, prazan direktorij. Keep-old-files odbija zamjenu postojećih datoteka, a no-same-owner ne vraća arhivirano vlasništvo. Ne mijenjajte odredište u / i ne raspakiravajte uz sudo.

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 za site/index.html i nginx/first-site.conf te naslov vraćene stranice. To provjerava sadržaj odabranih datoteka, ne produkcijsko vlasništvo, ACL-ove, dostupnost usluge ili sve ovisnosti weba.

Odvojite povrat datoteka od oporavka usluge

Vraćena konfiguracija još je neaktivan tekst. Na zasebnom zamjenskom serveru provjerite putanje, includes, module, dozvole i certifikate. Tamo testirajte sastavljenu Nginx konfiguraciju prije ponovnog učitavanja pa provjerite HTTP/HTTPS izvana. Test neizmijenjenog aktivnog servera ne provjerava ovu vraćenu kopiju.

Arhiva namjerno ne sadrži privatne TLS ključeve. Planirajte ponovno izdavanje certifikata ili njihovu posebno zaštićenu kopiju. Aktivnu bazu nemojte kopirati ovim tar postupkom: koristite podržanu metodu dosljedne kopije i povrata baze.

Snimke pružatelja mogu pomoći, ali provjerite čuvanje, zajedničke uzroke kvara i način oporavka. Postojanje snimke ne dokazuje da se izvezene datoteke mogu vratiti na drugi stroj.

Zapišite cilj i rezultat oporavka

RPO je prihvatljiv gubitak podataka izražen vremenom, a RTO ciljano vrijeme oporavka usluge. Za mali informativni web primjer ciljeva je 24 sata RPO i 60 minuta RTO. To su poslovne pretpostavke, ne izmjeren rezultat ove vježbe. Dnevni raspored ima smisla samo ako kopije uspijevaju i ostaju obnovljive.

Na malom zaslonu pomaknite tablicu vodoravno za pregled svih stupaca.

ZapisŠto pokazuje
Vrijeme kopije i verzija webaKoju verziju možete vratiti
Neovisno odredište i čuvanjeGdje i koliko dugo kopija ostaje dostupna
Provjera arhive i datotekaJesu li vraćeni odabrani bajtovi
Početak i kraj povrataTrajanje jasno određenih koraka
Nedostajuće dozvole, datoteke ili ovisnostiŠto još treba za oporavak usluge
Vanjska HTTPS provjera zamjenskog serveraRadi li web nakon oporavka

Izmjerite cijeli povrat, uključujući pristup, stvaranje servera, konfiguraciju, certifikat i DNS. Brzo lokalno raspakiravanje nije mjerenje trajanja prekida. Čuvajte više prikladnih točaka povrata i provjeravajte neuspjele poslove. Usporedite mogućnosti oporavka pri odabiru usluge.

Pitanja i odgovori

Trebam li izbrisati originalni web kako bih provjerio kopiju?

Ne. Povrat u zaseban prazan direktorij i kontrolni zbrojevi provjeravaju datoteke bez prekida weba. Cijelu uslugu testirajte u zasebnom zamjenskom okruženju.

Dokazuje li ispravan hash da je cijeli web kopiran?

Provjerava samo datoteke u manifestu. Ne otkriva izostavljenu bazu, tajni podatak ili DNS postavku. Vodite popis i testirajte stvarne radnje nakon oporavka.

Vježba provjerava odabrane datoteke i plan povrata. Nije test udaljene SSH veze, aktivacije Nginxa niti oporavka vaše cijele aplikacije.

Sljedeći koristan korak