Praktik bələdçi / VPS ehtiyat nüsxəsinin bərpası

VPS ehtiyat nüsxəsinin bərpasını sınaqdan keçirin

İki sınaq faylını arxivləyin, checksum ilə yoxlayın, başqa kompüterə köçürün və yeni boş qovluqda bərpa edin. Bu məşq işləyən saytı əvəz etmir və bütöv tətbiq üçün tam backup sistemi deyil.

· Yenilənib: · Oxuma vaxtı: təxminən 4 dəqiqə

Bələdçinin məzmunu

Məşqin əhatəsini müəyyən edin

Ubuntu serverində Bash, GNU tar, sha256sum və OpenSSH; müştəridə Linux və ya WSL lazımdır. Server və müştəri terminallarını ayırın. Hər mühitdə eyni terminalı saxlayın: sonrakı bloklar əvvəlki dəyişənlərdən istifadə edir. İstənilən xəta yaranarsa, davam etmədən səbəbi düzəldin.

Öz home qovluğunuzda iki müvəqqəti fayl hazırlanır. Nginx xidməti, işləyən sayt və firewall dəyişmir; arxiv / kök qovluğuna açılmır. Tam backup üçün assets, redirects, include faylları, DNS, runtime, verilənlər bazası və sertifikat asılılıqları ayrıca siyahıya alınmalıdır.

Sınaq fayllarını hazırlayın

Aşağıdakı əmrlər serverdə sınaq səhifəsi və aktiv olmayan Nginx konfiqurasiyası yaradır. Onlar heç bir işləyən xidmətə qoşulmur.

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"

İstəsəniz, bu iki faylın yerinə oxumağa səlahiyyətiniz olan statik səhifə və sayt konfiqurasiyasını götürün. Əvvəlcə məxfi məlumatı yoxlayın və ardıcıl nüsxə üçün deploy-u müvəqqəti dayandırın. Bu dar nümunəyə certificate private key, sistem qovluğu və başqa fayllar əlavə etməyin. Başqa fayl lazımdırsa, inventar və manifest-i də uyğunlaşdırın.

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"

Faylların və arxivin checksum-larını yaradın

Serverdə əvvəlcə nisbi fayl yolları ilə checksum siyahısı, sonra arxiv və onun checksum-u yaradılır. Arxiv hazırlandıqdan sonra daxilindəki məzmun dəyişməməlidir.

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

Siyahıda site və nginx daxilində iki fayl, həmçinin SHA256SUMS görünməlidir. Checksum ötürmə zamanı dəyişikliyi aşkar edir; fayl və checksum siyahısı birlikdə dəyişdirilərsə, mənbənin etibarlılığını sübut etmir. Etibarlı ötürmə və giriş nəzarəti də lazımdır.

Nüsxəni ayrıca kompüterə köçürün

Növbəti blok müştəri kompüterində işlədilir. remote_backup üçün serverin çap etdiyi dəqiq yolu yazın. REPLACE nişanını və 203.0.113.10 ünvanını əvəz edin; mktemp-in təsadüfi sonluğunu təxmin etməyin. SSH host identity etibarlı qeydlə təsdiqlənməlidir; yoxlamanı keçməyin.

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

SCP ötürməni şifrələyir, amma diskdəki tar.gz arxivi avtomatik şifrəli deyil. Nüsxəyə girişi məhdudlaşdırın və lazım gəlsə saxlama yerini şifrələyin. Eyni VPS-də başqa qovluq müstəqil ehtiyat nüsxə sayılmır. Giriş problemində SSH diaqnostikasını oxuyun.

Yeni boş qovluqda bərpa edib yoxlayın

Müştəridə əvvəlcə arxiv checksum nəticəsinin OK olduğunu təsdiqləyin. Uyğun gəlmirsə, gözlənilən checksum-u yenidən hesablayıb əvəz etməyin. Yalnız etibarlı arxivi yeni boş qovluğa açın; / və ya sudo istifadə etməyin.

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

Hər iki faylın checksum nəticəsi OK olmalı və sınaq səhifəsinin başlığı görünməlidir:

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"

keep-old-files və no-same-owner mövcud faylı əvəz etməməyi və arxiv sahibini tətbiq etməməyi təmin etməyə kömək edir. Bu, məzmun yoxlamasıdır: owner, ACL, xidmət vəziyyəti və bütün asılılıqların bərpasını təsdiqləmir.

Tam xidmətin bərpasına nə çatışmır?

Məşqdə Nginx konfiqurasiyası aktiv deyil. Yeni serverə tətbiqdən əvvəl yolları, include-ları, modulları, icazələri və sertifikatları yoxlayın. nginx -t yeni serverdə işlədilməli, sonra kənardan HTTP/HTTPS yoxlanmalıdır. Köhnə serverdə syntax test yeni mühitin düzgünlüyünü sübut etmir.

Sertifikatın şəxsi açarları bu məşqə daxil deyil: qorunan nüsxədən bərpa edin və ya sertifikatı yenidən alın. İşləyən verilənlər bazasının qovluğunu sadəcə tar ilə arxivləmək consistent backup sayılmır; bazaya uyğun üsul seçin. Snapshot üçün saxlanma müddəti, nasazlıq asılılığı və restore ayrıca yoxlanır. Snapshot-un olması müstəqil fayl ixracı və bərpa imkanını sübut etmir.

Məlumat itkisi və bərpa müddətini ölçün

RPO qəbul edilən məlumat itkisi intervalıdır, RTO isə xidmətin bərpasına ayrılan vaxtdır. 24 saat və 60 dəqiqə nümunə hədəflərdir, bu məşqin ölçülmüş nəticəsi deyil. Gündəlik backup yalnız uğurlu və bərpa edilən nöqtə yaratdıqda həmin intervalı təmin edir.

Tarix, tətbiq release-i, nüsxənin yeri, saxlanma müddəti, checksum, başlanğıc və bitmə vaxtını, çatışmayan asılılıqları və icazələri qeyd edin. Tam recovery vaxtına girişin qaytarılması, server yaradılması, xidmət, sertifikat, DNS və xarici HTTPS testi daxildir. Yerli arxivin tez açılması bütün xidmətin bərpa sürəti deyil.

Bir neçə bərpa nöqtəsi saxlayın, uğursuz backup tapşırıqları üçün xəbərdarlıq qurun və növbəti sınağı planlaşdırın. Faylın mövcudluğu onun yararlı ehtiyat nüsxə olduğunu göstərmir.

Tez-tez verilən suallar

Bu, bütün serverin ehtiyat nüsxəsidir?

Xeyr. İki faylın müstəqil nüsxəsini sınayan məşqdir. Tətbiqin məlumatları, xidmətləri və asılılıqları ayrıca əhatə olunmalıdır.

Checksum niyə təkbaşına kifayət etmir?

Dəyişikliyi aşkar edir, amma arxivlə siyahı birlikdə dəyişdirilibsə etibarlılığı sübut etmir.

Eyni serverdə ikinci qovluq uyğundur?

Server itəndə o da itə bilər. Nüsxəni müstəqil mühitə köçürüb bərpanı sınayın.

Arxivi işləyən saytın üzərinə açmayın. Məqsəd başqa mühitdəki nüsxəni yoxlamaqdır; tam xidmət bərpasını ayrıca planlaşdırın.

Rəsmi mənbələr

  1. Sənəd 1: ubuntu.com
  2. Sənəd 2: www.gnu.org
  3. Sənəd 3: www.gnu.org
  4. Sənəd 4: man.openbsd.org

Əlaqəli bələdçilər