ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Ρύθμιση περιβάλλοντος
Αντίγραφα ασφαλείας
Αυτοματοποίηση
Αποκατάσταση
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Ενώ το Vultr έχει ένα σύστημα δημιουργίας αντιγράφων ασφαλείας για ολόκληρες εικόνες συστήματος, αυτό λειτουργεί σε επίπεδο μπλοκ και απαιτεί την επαναφορά του αντιγράφου ασφαλείας σε μια εικονική μηχανή πριν την επαναφορά των δεδομένων. Επιπλέον, τα αντίγραφα ασφαλείας αποθηκεύονται μόνο για σύντομο χρονικό διάστημα και δεν παρέχουν μια πραγματική σταδιακή λύση δημιουργίας αντιγράφων ασφαλείας.
Enter Duplicity - Το Duplicity βασίζεται στο θρυλικό rsync και παρέχει τη δυνατότητα αποθήκευσης σταδιακών αντιγράφων ασφαλείας μαζί με κρυπτογράφηση των δεδομένων σε κατάσταση ηρεμίας μέσω GPG. Είναι συμβατό με το Posix και μεταφέρει μόνο δέλτα μεταξύ εφεδρικών εκτελέσεων, μειώνοντας έτσι τη συνολική απαίτηση εύρους ζώνης.
Ρύθμιση περιβάλλοντος
Ορολογία
- Κεντρικός υπολογιστής πηγής - Διακομιστής που θα έχει αντίγραφα ασφαλείας των δεδομένων του. Για αυτό το σεμινάριο, έχει τη διεύθυνση IP: 10.1.10.1
- Δημιουργία αντιγράφων ασφαλείας - Διακομιστής προορισμού για αντίγραφα ασφαλείας. Για αυτό το σεμινάριο, έχει τη διεύθυνση IP: 10.1.10.2
- /backupdir - Κατάλογος προέλευσης στον κεντρικό υπολογιστή προέλευσης που χρησιμοποιείται για δημιουργία αντιγράφων ασφαλείας σε αυτό το σεμινάριο. Μπορείτε να το αλλάξετε για να ταιριάζει με το περιβάλλον σας.
- /destdir - Κατάλογος προορισμού στον κεντρικό υπολογιστή αντιγράφων ασφαλείας που χρησιμοποιείται για δημιουργία αντιγράφων ασφαλείας σε αυτό το σεμινάριο. Μπορείτε να το αλλάξετε για να ταιριάζει με το περιβάλλον σας.
- Πλήρες αντίγραφο ασφαλείας - Ολόκληρο αντίγραφο του συνόλου δεδομένων πηγής.
- Αύξηση αντιγράφου ασφαλείας - Αντίγραφο όλων των αλλαγών που έγιναν από το τελευταίο αντίγραφο ασφαλείας.
Εγκατάσταση Duplicity
Ubuntu 14.04:
sudo apt-get update
sudo apt-get install duplicity python-paramiko
CentOS (απαιτείται EPEL):
sudo yum install duplicity python-paramiko
Ubuntu 12.04/Debian 7:
sudo apt-get update
sudo apt-get install ncftp python-paramiko python-pycryptopp lftp python-boto python-dev librsync-dev
wget https://launchpad.net/duplicity/0.7-series/0.7.02/+download/duplicity-0.7.02.tar.gz
tar xzvf duplicity*
cd duplicity*
sudo python setup.py install
Πρέπει να εγκαταστήσουμε από την πηγή καθώς το πακέτο Duplicity στο Debian 7 και το Ubuntu 12.04 είναι κατεστραμμένο λόγω μιας αλλαγής στη βιβλιοθήκη SSH του backend.
Ελέγξτε ξανά ότι το Duplicity είναι εγκατεστημένο εκτελώντας:
duplicity -v
Θα πρέπει να επιστρέψει την ακόλουθη έξοδο (η έκδοση μπορεί να είναι διαφορετική):
duplicity 0.6.18
Ρύθμιση ελέγχου ταυτότητας χωρίς κλειδί για SSH
Το επόμενο βήμα είναι να ρυθμίσετε τον έλεγχο ταυτότητας βάσει πιστοποιητικού για SSH μεταξύ του κεντρικού υπολογιστή αντιγράφου ασφαλείας και του κεντρικού υπολογιστή προέλευσης. Αυτό θα επιτρέψει στον διακομιστή προέλευσης να μεταφέρει SSH στον αντίγραφο ασφαλείας χωρίς να πληκτρολογήσει μια φράση πρόσβασης. Το Vultr έχει ένα υπέροχο άρθρο που εξηγεί πώς να το κάνετε αυτό: Πώς μπορώ να δημιουργήσω κλειδιά SSH .
Αντίγραφα ασφαλείας
Εκτέλεση του πρώτου (πλήρους) αντιγράφου ασφαλείας
Ας κάνουμε ένα πλήρες αντίγραφο ασφαλείας! Αυτό θα στείλει ένα πλήρες αντίγραφο δεδομένων από τον διακομιστή προέλευσης στον προορισμό.
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Μπορείτε να προσθέσετε επιπλέον φακέλους συμπεριλαμβάνοντας πολλαπλές --include="[dir]"δηλώσεις.
Το --no-encryptionορίζει ότι τα δεδομένα δεν πρόκειται να κρυπτογραφηθούν στον προορισμό. Τα δεδομένα θα κρυπτογραφηθούν κατά τη μεταφορά καθώς περνούν μέσα από τη σήραγγα SSH.
Η --exclude="**" /επιλογή είναι ένα τέχνασμα για να δημιουργήσετε αντίγραφα ασφαλείας για όλα όσα βρίσκονται μόνο στη λίστα συμπερίληψης (και τίποτα άλλο).
Εκτέλεση σταδιακής δημιουργίας αντιγράφων ασφαλείας
Η εκτέλεση ενός σταδιακού αντιγράφου ασφαλείας είναι πολύ απλή - απλώς αλλάξτε τη fullσημαία σε incrementalσημαία.
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Αυτοματοποίηση
Γράψτε αυτοματοποιημένα σενάρια
Το να πρέπει να εκτελείτε αυτές τις εντολές κάθε φορά που χρειάζεστε ένα αντίγραφο ασφαλείας είναι ένα σύρσιμο - τι θα γινόταν αν είχαμε σενάρια για να το χειριστούμε για εμάς;
Πλήρες αντίγραφο ασφαλείας σεναρίου
Εκτελέστε την εντολή.
nano /usr/local/bin/backup-full
Προσθέστε το ακόλουθο περιεχόμενο.
#!/bin/bash
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Αυξητικό σενάριο δημιουργίας αντιγράφων ασφαλείας
nano /usr/local/bin/backup-incremental
Προσθέστε το ακόλουθο περιεχόμενο.
#!/bin/bash
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Κάντε τα σενάρια εκτελέσιμα
Για να κάνετε τα σενάρια εκτελέσιμα, εκτελέστε την ακόλουθη εντολή.
chmod +x /usr/local/bin/backup-*
Τώρα μπορείτε να δημιουργήσετε αντίγραφο ασφαλείας εκτελώντας backup-fullκαι backup-incrementalμέσα από το κέλυφος. Πολύ ωραίο!
Ρύθμιση cron
Ας κάνουμε αυτόματα τα αντίγραφα ασφαλείας! Ρυθμίζοντας το cron για να εκτελούνται τα παραπάνω σενάρια σε καθορισμένους χρόνους, μπορούμε να βεβαιωθούμε ότι τα αντίγραφα ασφαλείας εκτελούνται σε τακτά χρονικά διαστήματα.
Εκτελέστε την ακόλουθη εντολή.
crontab -e
Προσθέστε τα παρακάτω στο κάτω μέρος του αρχείου.
10 01 * * 1,2,3,4,5,6 backup-incremental
10 01 * * 7 backup-full
Αυτό θα εκτελεί ένα πλήρες αντίγραφο ασφαλείας κάθε Κυριακή στη 1:10 π.μ. και θα εκτελεί επιπλέον αντίγραφα ασφαλείας κάθε δεύτερη μέρα στη 1:10 π.μ. επίσης.
Αποκατάσταση
Ο Godzilla κατέστρεψε το Σιάτλ και πρέπει να μπορούμε να πάρουμε τα δεδομένα πίσω από το εφεδρικό VPS στη Νέα Υόρκη!
duplicity --no-encryption --file-to-restore / ssh://user@backupserver:22/destdir/
Εάν πρέπει να επαναφέρουμε δεδομένα από 3 ημέρες πριν:
duplicity --no-encryption -t 3D --file-to-restore / ssh://user@backupserver:22/destdir/
Η -t 3Dεπιλογή σημαίνει επαναφορά ενός αντιγράφου ασφαλείας από τρεις ημέρες πριν. Παρόμοιες επιλογές όπως -t 1M(για έναν μήνα πριν) ή -t 5H(για πριν από 5 ώρες) λειτουργούν επίσης.