Panduan praktikal / Salinan dan pemulihan

Sandaran VPS yang boleh dipulihkan dan disemak

Sandaran VPS berguna apabila fail boleh diambil semula di luar mesin asal. Latihan ini mengarkibkan satu halaman statik dan satu konfigurasi Nginx, memindahkannya ke komputer lain, lalu mengesahkan fail yang dipulihkan tanpa mengubah laman aktif.

· Dikemas kini · Anggaran bacaan 5 minit

Dalam panduan ini

Tetapkan skop latihan

Gunakan Bash, GNU tar, sha256sum dan OpenSSH pada Ubuntu atau klien Linux/WSL. Kekalkan satu terminal server dan satu terminal pada komputer berasingan supaya pemboleh ubah setiap sesi tersedia. Berhenti jika mana-mana arahan gagal.

Dua fail latihan berada dalam direktori home. Konfigurasi Nginx tidak diaktifkan, firewall tidak diubah dan pengekstrakan tidak menggunakan root. Pilihan salinan sebenar di bawah hanya meliputi dua fail daripada panduan laman HTTPS. Inventori laman lebih besar perlu memasukkan aset, redirect, DNS, kebergantungan dan data lain.

Sediakan fail tanpa mengganggu laman

Pada server, cipta direktori latihan peribadi. Fail konfigurasi ini bahan arkib, bukan konfigurasi yang perlu diaktifkan.

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"

Pilihan sahaja: gantikan salinan latihan dengan halaman dan server block daripada tutorial. Kedua-dua fail sumber mesti boleh dibaca oleh akaun anda. Semak rahsia dalam konfigurasi dan hentikan perubahan deployment semasa salinan diambil supaya kedua-duanya mewakili keluaran yang sama. Langkau blok ini untuk fail latihan.

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"

Sumber aktif hanya dibaca. Kunci peribadi sijil dan seluruh direktori sistem tidak disalin. Jika laman memerlukan fail tambahan, masukkannya secara sengaja dalam inventori serta manifest checksum.

Bina arkib dan checksum

Pada server, rekod checksum fail, cipta arkib dengan laluan relatif dan kira checksum arkib. Jangan ubah kandungan sepanjang langkah ini.

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

Senarai arkib sepatutnya mengandungi site/, nginx/, dua fail terpilih dan SHA256SUMS. Checksum arkib mengesan perubahan semasa pemindahan; manifest dalaman memeriksa fail selepas pengekstrakan. Kedua-duanya tidak mengesahkan sumber jika penyerang boleh mengganti data dan checksum jangkaan sekali gus.

Pindahkan ke komputer lain

Pada klien, tetapkan remote_backup kepada direktori eksport tepat yang dicetak server. Gantikan alamat contoh 203.0.113.10, akaun, kunci dan REPLACE. REPLACE bukan akhiran sebenar yang dijana oleh 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/"

Sahkan fingerprint hos melalui saluran dipercayai sebelum menerima hos baharu. Jika pemindahan gagal akibat SSH, ikuti diagnosis sambungan; jangan matikan pemeriksaan kunci hos.

SCP melindungi pemindahan melalui SSH. Fail tar.gz dimampatkan tetapi tidak disulitkan. Lindungi akaun serta storan destinasi dan gunakan penyulitan tersimpan apabila diperlukan. Direktori kedua pada VPS yang sama bukan salinan di luar server.

Pulihkan dalam direktori kosong

Pada klien, semak arkib dahulu. Teruskan hanya apabila sha256sum menunjukkan OK. Jika gagal, siasat atau pindahkan semula; jangan mengganti checksum jangkaan untuk menutup masalah.

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

Ekstrak arkib yang diketahui ini ke direktori baharu. keep-old-files menolak penggantian fail sedia ada, manakala no-same-owner mengelakkan pemulihan pemilikan asal. Jangan tukar destinasi kepada / dan jangan gunakan 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"

Jangka OK untuk site/index.html dan nginx/first-site.conf serta tajuk halaman yang dipulihkan. Ini mengesahkan kandungan fail, bukan pemilikan production, ACL, status servis atau semua kebergantungan.

Uji servis secara berasingan

Konfigurasi yang dipulihkan masih fail teks tidak aktif. Sebelum digunakan pada server pengganti, semak laluan, include, modul, kebenaran dan sijil. Uji konfigurasi Nginx yang telah dipasang di situ sebelum reload, kemudian semak HTTP/HTTPS dari luar. Ujian sintaks pada server asal tidak menguji salinan ini.

Arkib ini tidak memasukkan kunci peribadi TLS. Rancang pengeluaran semula sijil atau sandaran sijil yang dilindungi. Fail pangkalan data aktif tidak sesuai disalin terus dengan resipi tar ini; gunakan prosedur sandaran konsisten yang disokong pangkalan data. Snapshot penyedia membantu tetapi mempunyai syarat penyimpanan dan pemulihan sendiri.

Rekod sasaran serta hasil

RPO ialah kehilangan data yang boleh diterima, diukur dalam masa; RTO ialah sasaran masa pemulihan servis. RPO 24 jam dan RTO 60 minit untuk laman statik kecil hanyalah contoh sasaran perniagaan, bukan keputusan ukuran latihan ini. Jadual harian hanya berguna apabila salinan berjaya dan boleh dipulihkan.

Pada skrin kecil, tatal jadual ke sisi untuk melihat semua lajur.

RekodTujuan
Masa salinan dan versi keluaranMenentukan data yang boleh dipulihkan
Destinasi bebas dan tempoh simpananMengetahui lokasi serta ketahanan salinan
Keputusan checksumMengesahkan bait fail terpilih
Masa mula dan tamat pemulihanMengukur langkah yang ditakrifkan
Fail atau kebergantungan hilangMengenal pasti kerja yang belum selesai
Ujian HTTPS pada penggantiMengesahkan servis benar-benar kembali

Ukur keseluruhan proses penggantian, termasuk akses, penciptaan mesin, konfigurasi, sijil dan DNS. Pengekstrakan pantas sahaja bukan ukuran pemulihan gangguan. Semak tugasan gagal dan simpan beberapa titik pemulihan yang sesuai. Bandingkan pilihan pengurusan dan storan sandaran dengan keperluan ini.

Soalan lazim

Perlukah laman asal dipadam untuk membuktikan sandaran berfungsi?

Tidak. Pulihkan ke direktori kosong berasingan dan semak manifest. Uji keseluruhan servis pada persekitaran pengganti tanpa menyebabkan gangguan pada laman asal.

Adakah checksum yang lulus membuktikan semua laman telah disandarkan?

Ia hanya mengesahkan fail dalam manifest. Aset, pangkalan data, rahsia atau tetapan DNS yang tidak dimasukkan tidak dapat dikesan olehnya.

Latihan ini meliputi pemulihan fail terpilih. Pemulihan servis lengkap memerlukan inventori, konfigurasi dan ujian fungsi tambahan.

Teruskan dengan panduan berkaitan