Innehåll
Avgränsa övningen
Använd Bash, GNU tar, sha256sum och OpenSSH på Ubuntu eller en Linux/WSL-klient. Ha en serverterminal och en klientterminal på en separat dator och håll dem öppna så att variablerna finns kvar. Avbryt vid kommandofel.
Vi använder två disponibla filer under hemkatalogen. Nginx, brandvägg och webbplats ändras inte; uppackning körs aldrig som root. En större webbplats kräver egen inventering av filer, databas, omdirigeringar, DNS, certifikat och beroenden.
Skapa två filer på servern
Kör på servern. Nginx-texten är en fil att arkivera, inte en konfiguration som ska aktiveras.
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"De engelska rubrikerna inne i kommandot är avsiktliga testdata från källguiden. Använd inte detta tvåfilsexempel som en fullständig backup av ett produktionssystem.
Skapa arkiv och kontrollsummor
Kör på servern utan att ändra filerna under steget:
(
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"Listningen ska innehålla site/, nginx/, de två filerna och SHA256SUMS. Arkivets kontrollsumma hittar förändringar under överföringen; den inre listan kontrollerar uppackade filer. Om någon kan byta både data och förväntad kontrollsumma ger summan ingen äkthetsgaranti.
Kopiera till en separat dator
Kör på klientdatorn. Sätt remote_backup till den exakta exportkatalogen som servern skrev ut. Byt adress, konto och nyckelfil till din fungerande anslutning. REPLACE är en platshållare, inte det suffix som mktemp skapade.
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/"Verifiera SSH-värdens fingeravtryck via en betrodd väg. Vid anslutningsfel, följ SSH-diagnosen; kringgå inte värdnyckelkontrollen.
SCP skyddar överföringen genom SSH. Själva tar.gz-filen är komprimerad, inte krypterad. Skydda destinationskontot och använd krypterad lagring om datan kräver det. En extra katalog på samma VPS är ingen oberoende kopia.
Verifiera och packa upp i en ny tom katalog
På klienten: kontrollera arkivet innan uppackning. Fortsätt bara när sha256sum visar OK. Utred fel eller överför igen; ändra inte den förväntade summan för att dölja problemet.
(
cd "$recovery_dir" &&
sha256sum -c static-site.tar.gz.sha256
)
tar -tzf "$recovery_dir/static-site.tar.gz"Packa upp detta betrodda arkiv i en nyskapad katalog. keep-old-files vägrar ersätta befintliga filer och no-same-owner undviker återställning av arkiverad ägare. Byt inte destination till / och använd inte 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"Båda filerna ska få OK och sidans återställda rubrik ska visas. Kontrollen bekräftar filernas innehåll, inte produktionsrättigheter, ACL, tjänstens tillgänglighet eller saknade beroenden.
Skilj filåterställning från återställd tjänst
Konfigurationen är fortfarande en inaktiv textfil. Innan den används på en separat ersättningsserver behöver sökvägar, includes, moduler, rättigheter och certifikat granskas. Validera den sammansatta Nginx-konfigurationen där och kontrollera HTTP/HTTPS utifrån.
TLS-nycklar ingår inte. Planera återutfärdande av certifikat eller en separat skyddad backup. Kopiera inte en aktiv databas med detta tar-recept; använd databasens metod för konsistent backup och återställning.
Snapshots kan hjälpa med maskinåterställning, men granska lagringstid, feldomän och återställningsprocess. En snapshot bevisar inte att webbplatsens exporterade filer går att använda på en annan värd.
Dokumentera mål och resultat
RPO beskriver acceptabel dataförlust i tid; RTO beskriver måltid för återställd tjänst. 24 timmar respektive 60 minuter kan vara ett tänkt verksamhetsmål för en liten statisk sida, inte ett uppmätt resultat från denna övning.
På en liten skärm kan du rulla tabellen i sidled för att se alla kolumner.
| Spara | Vad uppgiften visar |
|---|---|
| Backuptid och versions-ID | Vilken version som kan återställas |
| Oberoende destination och lagringstid | Var kopian finns och hur länge |
| Arkiv- och filkontroller | Om utvalda byte återställdes |
| Start- och sluttid | Tid för de definierade stegen |
| Saknade filer och beroenden | Vad som återstår före tjänstestart |
| Externt HTTPS-test på ersättaren | Om webbplatsen faktiskt kom tillbaka |
Mät hela återställningen, inklusive åtkomst, maskin, konfiguration, certifikat och DNS, innan du litar på ett RTO. Övervaka misslyckade backupjobb och behåll lämpliga återställningspunkter. Jämför stöd och lagring med hostingkraven.
Begränsad filövning från EN. Den engelska källan redovisar lokalt test med GNU-verktyg; detta verifierar inte fjärröverföring, certifikat eller en aktiverad Nginx-tjänst.
Vanliga frågor
Måste originalsidan raderas för att prova backupen?
Nej. Återställ till en separat tom katalog och verifiera filerna. Testa sedan hela tjänsten i en annan miljö utan att orsaka ett avbrott.
Visar godkända kontrollsummor att allt är säkerhetskopierat?
De verifierar bara filerna i listan. De kan inte upptäcka en utelämnad databas, hemlighet, bild eller DNS-inställning.