Πρακτικός οδηγός / Ανεξάρτητο αντίγραφο

Backup και επαναφορά VPS με έλεγχο των αρχείων

Για backup και επαναφορά VPS χρειάζεται αντίγραφο που μπορείς να ανακτήσεις έξω από τη μηχανή. Αυτή η άσκηση αρχειοθετεί μια στατική σελίδα και ένα αρχείο Nginx, τα μεταφέρει σε άλλο υπολογιστή και ελέγχει τα bytes τους χωρίς να πειράζει ενεργό ιστότοπο.

· Ενημέρωση: · Περίπου 5 λεπτά ανάγνωσης

Περιεχόμενα

Όρισε ένα μικρό, ελέγξιμο σενάριο

Χρειάζονται Bash, GNU tar, sha256sum και OpenSSH σε Ubuntu ή Linux/WSL. Οι εντολές server εκτελούνται σε ένα τερματικό του server και οι εντολές client σε ένα τερματικό άλλου υπολογιστή. Κράτησε τα δύο τερματικά ανοικτά ώστε οι μεταβλητές να παραμένουν διαθέσιμες. Σταμάτησε σε κάθε σφάλμα εντολής.

Θα χρησιμοποιήσεις δύο αναλώσιμα αρχεία στο home σου. Δεν αλλάζει Nginx, firewall ή παραγωγικό περιεχόμενο, και η εξαγωγή δεν γίνεται ως root. Δεν πρόκειται για πλήρες backup μηχανής, βάσης ή εφαρμογής.

Δημιούργησε τα δύο δοκιμαστικά αρχεία

Στον server φτιάξε τον ιδιωτικό φάκελο εξάσκησης. Το configuration είναι αρχείο προς αρχειοθέτηση, όχι ρύθμιση που θα ενεργοποιήσεις σε υπηρεσία:

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"

Για πραγματικό site θα χρειαστεί απογραφή εικόνων, redirects, include files, DNS και εξαρτήσεων. Η άσκηση δεν περιλαμβάνει ιδιωτικά TLS keys. Συλλογή πραγματικών αρχείων πρέπει να αντιστοιχεί στην ίδια έκδοση και να γίνεται με έλεγχο για μυστικά.

Φτιάξε archive και δύο επίπεδα checksums

Στο ίδιο τερματικό του server υπολόγισε SHA-256 των επιλεγμένων αρχείων, δημιούργησε archive με σχετικές διαδρομές και μετά υπολόγισε checksum του archive. Μην αλλάζεις το περιεχόμενο κατά τη συλλογή.

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

Στη λίστα αναμένονται site/, nginx/, τα δύο αρχεία και SHA256SUMS. Το checksum του archive ελέγχει μεταβολή στο πακέτο μεταφοράς, ενώ το εσωτερικό manifest ελέγχει τα εξαγόμενα αρχεία. Δεν αποδεικνύουν την προέλευση αν κάποιος μπορεί να αντικαταστήσει και δεδομένα και αναμενόμενο checksum.

Μετέφερε το αντίγραφο σε άλλο υπολογιστή

Στον client, το remote_backup πρέπει να είναι ο ακριβής φάκελος export που εκτύπωσε ο server. Το REPLACE είναι placeholder, όχι το τυχαίο επίθημα του mktemp. Αντικατάστησε και τη διεύθυνση 203.0.113.10, χρήστη και αρχείο κλειδιού.

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

Επαλήθευσε νέο SSH host key από αξιόπιστο κανάλι. Αν η μεταφορά αποτύχει λόγω σύνδεσης, χρησιμοποίησε τη διάγνωση SSH αντί να απενεργοποιήσεις τον έλεγχο κλειδιού.

Το SCP προστατεύει τη μεταφορά μέσω SSH. Το tar.gz είναι συμπιεσμένο, όχι κρυπτογραφημένο αρχείο· προστάτευσε λογαριασμό και αποθήκευση και πρόσθεσε κρυπτογράφηση αποθηκευμένων δεδομένων όπου χρειάζεται. Ένας δεύτερος φάκελος στον ίδιο VPS δεν είναι ανεξάρτητο αντίγραφο εκτός server.

Επαλήθευσε και επανάφερε σε νέο άδειο φάκελο

Στον client έλεγξε πρώτα το archive. Συνέχισε μόνο με OK· σε αποτυχία διερεύνησε την αιτία ή επανάλαβε τη μεταφορά. Μην αλλάξεις το αναμενόμενο checksum για να κρύψεις το σφάλμα.

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

Εξήγαγε το αξιόπιστο archive σε νέο, άδειο φάκελο. Το keep-old-files αρνείται αντικατάσταση υπαρχόντων αρχείων και το no-same-owner δεν επαναφέρει την αρχειοθετημένη ιδιοκτησία. Μη βάλεις ως προορισμό το / και μη χρησιμοποιήσεις 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"

Περίμενε OK για site/index.html και nginx/first-site.conf, καθώς και τον τίτλο της ανακτημένης σελίδας. Ελέγχεις περιεχόμενο αρχείων, όχι παραγωγική ιδιοκτησία, ACL, διαθεσιμότητα υπηρεσίας ή όλες τις εξαρτήσεις.

Ξεχώρισε ανάκτηση αρχείων από επαναφορά υπηρεσίας

Το ανακτημένο configuration παραμένει ανενεργό αρχείο. Σε ξεχωριστό server αντικατάστασης έλεγξε διαδρομές, includes, modules, δικαιώματα και πιστοποιητικά. Εκεί δοκίμασε τη συναρμολογημένη ρύθμιση Nginx πριν το reload και μετά HTTP/HTTPS εξωτερικά. Ένα nginx -t στον αμετάβλητο παραγωγικό server δεν ελέγχει αυτό το αντίγραφο.

Προγραμμάτισε επανέκδοση πιστοποιητικού ή χωριστό προστατευμένο backup TLS keys. Μην αντιγράψεις αρχεία ενεργής βάσης με αυτή τη συνταγή tar· χρησιμοποίησε υποστηριζόμενη μέθοδο συνεπούς backup και restore της βάσης.

Τα snapshots βοηθούν σε ανάκτηση μηχανής, αλλά χρειάζονται έλεγχο διατήρησης, εξάρτησης από την ίδια υποδομή και διαδικασίας restore. Η ύπαρξή τους δεν αποδεικνύει ότι ανακτάς λειτουργικό site αλλού.

Κατέγραψε στόχο και αποτέλεσμα επαναφοράς

Το RPO είναι η αποδεκτή απώλεια δεδομένων μετρημένη σε χρόνο· το RTO είναι ο στόχος χρόνου αποκατάστασης υπηρεσίας. Για μικρό στατικό site, 24 ώρες RPO και 60 λεπτά RTO μπορούν να αποτελέσουν υποθετικούς επιχειρησιακούς στόχους, όχι μετρημένα αποτελέσματα αυτής της άσκησης.

Σε μικρή οθόνη, σύρε τον πίνακα οριζόντια για να δεις όλες τις στήλες.

ΚαταγραφήΤι επιβεβαιώνει
Χρόνος backup και έκδοσηΠοια κατάσταση επαναφέρεις
Ανεξάρτητος προορισμός και διατήρησηΠού και για πόσο υπάρχει το αντίγραφο
Checksums archive και αρχείωνΑν ανακτήθηκαν τα επιλεγμένα bytes
Έναρξη και ολοκλήρωση restoreΧρόνος των συγκεκριμένων βημάτων
Ελλείψεις και εξαρτήσειςΤι απομένει για λειτουργική υπηρεσία
Εξωτερικός έλεγχος HTTPSΑν επέστρεψε πραγματικά το site

Μέτρησε ολόκληρη τη διαδικασία μαζί με πρόσβαση, νέα VM, configuration, πιστοποιητικά και DNS όπου χρειάζεται. Η γρήγορη τοπική εξαγωγή δεν αποτελεί benchmark αποκατάστασης διακοπής. Κράτησε κατάλληλα σημεία επαναφοράς και έλεγχε αποτυχημένες εργασίες backup.

Ο οδηγός εγκατάστασης δίνει το πρώτο site. Στα κριτήρια φιλοξενίας συνυπολόγισε διατήρηση αντιγράφων και βοήθεια στην ανάκτηση.

Άσκηση περιορισμένη σε δύο στατικά αρχεία, χωρίς ενεργοποίηση του ανακτημένου configuration. Η απομακρυσμένη μεταφορά και η πλήρης επαναφορά εφαρμογής χρειάζονται χωριστή δοκιμή στο δικό σου περιβάλλον.

Συχνές ερωτήσεις

Πρέπει να διαγράψω το αρχικό site για τη δοκιμή;

Όχι. Η επαναφορά σε άλλο άδειο φάκελο και ο έλεγχος manifest δοκιμάζουν το αντίγραφο χωρίς διακοπή. Η πλήρης υπηρεσία δοκιμάζεται σε ξεχωριστό περιβάλλον αντικατάστασης.

Ένα σωστό checksum σημαίνει πλήρες backup;

Επιβεβαιώνει μόνο τα αρχεία που περιλαμβάνει το manifest. Δεν ανακαλύπτει παραλειπόμενη βάση, asset, μυστικό ή DNS record.

Αρκεί ένα snapshot;

Έλεγξε διατήρηση, εξάρτηση από την υποδομή και τρόπο επαναφοράς. Για σημαντικά δεδομένα κράτησε και κατάλληλο ανεξάρτητο αντίγραφο.

Το επόμενο χρήσιμο βήμα

Πόροι μαζί με σχέδιο επαναφοράς.

Σύγκρινε την προσφορά με τις απαιτήσεις της εφαρμογής και τους τρέχοντες όρους του παρόχου.

Δες διαθέσιμους server

Σύνδεσμος συνεργάτη · Έλεγξε την προσφορά πριν παραγγείλεις.