Praktični vodnik / Kopiranje in obnova

Varnostne kopije VPS s preverjeno obnovo

Varnostne kopije VPS so uporabne, ko lahko podatke pridobite tudi zunaj strežnika in jih obnovite. Ta vaja arhivira statično stran ter eno konfiguracijo Nginx, kopijo prenese na drug računalnik in preveri obnovljene bajte, ne da bi spreminjala delujočo stran.

· Posodobljeno · Branje: približno 5 min.

V tem vodniku

Določite omejen preizkus

Uporabite Bash, GNU tar, sha256sum in OpenSSH v Ubuntu ali na odjemalcu Linux/WSL. Strežniške ukaze izvajajte v enem terminalu strežnika, odjemalske v enem terminalu drugega računalnika. Terminala pustite odprta, da se spremenljivke ohranijo. Ob napaki se ustavite.

Vaja uporablja dve začasni datoteki v vašem domačem imeniku. Ne aktivira konfiguracije Nginx in ne spreminja požarnega zidu ali žive strani. Razširjanje arhiva nikoli ne teče kot root. Večja stran potrebuje ločen popis vsebine, preusmeritev, DNS, skrivnosti in odvisnosti.

Pripravite dve vzorčni datoteki

Na strežniku ustvarite zaseben vadbeni imenik. Konfiguracija v tem bloku je le datoteka za arhiviranje, ne konfiguracija za vklop.

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: če ste sledili vodniku statične strani, lahko vzorčni kopiji zamenjate z njegovima pravima datotekama. Vaš račun mora imeti pravico branja. Preglejte morebitne skrivnosti in med zajemom ustavite objavljanje sprememb. Za vajo z vzorcem naslednji blok preskočite.

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"

Ukazi izvirnika le berejo. Ne kopirajo zasebnih ključev TLS ali celotnih sistemskih imenikov. Dodatne potrebne datoteke načrtno vključite v popis in seznam kontrolnih vsot.

Ustvarite arhiv in kontrolne vsote

Na strežniku izračunajte vsote izbranih datotek, ustvarite arhiv z relativnimi potmi in še vsoto arhiva. Vsebina naj se med tem ne spreminja.

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

Seznam naj vsebuje site/, nginx/, izbrani datoteki in SHA256SUMS. Vsota arhiva zazna spremembo prenesene datoteke, notranji seznam pa preveri razširjeno vsebino. Vsoti ne potrdita izvora kopije, če lahko nekdo zamenja tako podatke kot pričakovano vsoto.

Prenesite kopijo na drug računalnik

Na odjemalcu nastavite remote_backup na točno izvozno pot, ki jo izpiše strežnik. Zamenjajte vzorčni IP, račun in ime ključa s svojimi podatki. 203.0.113.10 je dokumentacijski naslov; REPLACE ni dejanska končnica imenika 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/"

Pred sprejemom novega gostitelja njegov prstni odtis preverite po zaupanja vredni poti. Ob težavah uporabite preverjanje SSH; ne izklapljajte preverjanja ključa. SCP varuje prenos prek SSH, arhiv tar.gz pa je stisnjen, ne šifriran. Zaščitite cilj in po potrebi uporabite šifriranje shrambe. Druga mapa na istem VPS ni neodvisna kopija.

Preverite arhiv in obnovite v prazno mapo

Na odjemalcu pred razširjanjem preverite vsoto arhiva. Nadaljujte le pri OK. Ob napaki raziščite vzrok ali ponovite prenos; pričakovane vsote ne spreminjajte, da bi napako skrili.

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

Zaupanja vreden arhiv razširite v novo prazno mapo. keep-old-files zavrne prepis obstoječih datotek, no-same-owner pa ne prenese arhiviranega lastništva. Cilja ne spremenite v / in ne uporabljajte 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"

Pričakujte OK za site/index.html in nginx/first-site.conf ter naslov obnovljene strani. To potrdi vsebino datotek, ne pravic v produkciji, ACL, delovanja storitve ali vseh odvisnosti.

Ločite obnovo datotek od obnove storitve

Obnovljena konfiguracija je še vedno neaktivna datoteka. Na ločenem nadomestnem strežniku preverite poti, vključene datoteke, module, pravice in potrdila. Pred ponovnim nalaganjem preizkusite sestavljeno konfiguracijo Nginx ter nato HTTPS od zunaj. Test stare delujoče konfiguracije ne preveri obnovljene kopije.

Arhiv namenoma izključuje zasebne ključe TLS. Načrtujte novo izdajo potrdila ali posebej zaščiteno kopijo. Aktivne podatkovne zbirke ne kopirajte s tem receptom tar; uporabite njen podprt postopek dosledne kopije in obnove.

Posnetki ponudnika lahko pomagajo pri obnovi stroja, vendar preverite hrambo, lokacijo odpovedi in obnovitveni postopek. Obstoj posnetka sam ne dokazuje, da lahko stran obnovite drugje.

Zapišite cilje in izmerjeni rezultat

RPO označuje sprejemljivo izgubo podatkov, izraženo v času, RTO pa ciljni čas ponovne vzpostavitve storitve. Za majhno informativno stran sta 24-urni RPO in 60-minutni RTO lahko poslovna cilja, ne izmerjena rezultata te vaje. Dnevni urnik pomaga le, če kopije uspejo in jih lahko obnovite.

Na majhnem zaslonu pomaknite preglednico vstran, da vidite vse stolpce.

ZapisKaj pokaže
Čas kopije in različica objaveKatero stanje lahko obnovite
Neodvisen cilj in trajanje hrambeKje kopija preživi in kako dolgo
Vsoti arhiva in datotekAli so izbrani bajti pravilni
Začetek in konec obnoveTrajanje določenih korakov
Manjkajoče datoteke ali odvisnostiKaj še manjka za delujočo storitev
Zunanje preverjanje HTTPSAli je stran dejansko spet na voljo

Pred potrditvijo RTO izmerite celotno zamenjavo: dostop, pripravo, konfiguracijo, potrdila in po potrebi DNS. Hitro razširjanje arhiva ni meritev celotne obnove. Hranite več ustreznih različic kopij in preverjajte neuspešna opravila.

Pogosta vprašanja

Ali moram izbrisati izvirnik, da preizkusim kopijo?

Ne. Obnova v ločeno prazno mapo in preverjanje vsot preizkusita datoteke brez prekinitve strani. Celotno storitev preizkusite v nadomestnem okolju.

Ali uspešna vsota pomeni popolno kopijo strani?

Potrdi le datoteke iz seznama. Ne najde izpuščene zbirke, skrivnosti, slike ali nastavitve DNS. Vzdržujte popis in po obnovi preverite dejanske funkcije.

Vaja preverja izbrane datoteke. Izvorni angleški postopek arhiva je bil lokalno preizkušen z orodji GNU v Git Bash; ta preizkus ni vključeval oddaljenega SSH, obnovitve potrdil ali zagona Nginx.

Povezani vodniki