Rsnapshot (Βασισμένο σε Rsync) - Ένα τοπικό/απομακρυσμένο βοηθητικό πρόγραμμα δημιουργίας αντιγράφων ασφαλείας συστήματος αρχείων για Linux


Το rsnapshot είναι ένα ανοιχτού κώδικα τοπικό/απομακρυσμένο βοηθητικό πρόγραμμα δημιουργίας αντιγράφων ασφαλείας συστήματος αρχείων που γράφτηκε σε γλώσσα Perl που ωφελούν τη δύναμη του < ΠρόγραμμαRsync και SSH για τη δημιουργία, προγραμματισμένων σταδιακών αντιγράφων ασφαλείας των συστημάτων αρχείων Linux/Unix, ενώ καταλαμβάνει μόνο χώρο ένα μόνο πλήρες αντίγραφο ασφαλείας συν τις διαφορές και διατηρήστε αυτά τα αντίγραφα ασφαλείας σε τοπικό δίσκο σε διαφορετικό σκληρό δίσκο, ένα εξωτερικό στικ USB , μια μονάδα δίσκου τοποθετημένη στο NFS ή απλώς μέσω δικτύου σε άλλο μηχάνημα μέσω SSH.

Αυτό το άρθρο θα δείξει πώς να εγκαταστήσετε, να ρυθμίσετε και να χρησιμοποιήσετε το rsnapshot για να δημιουργήσετε σταδιακά ωριαία, ημερήσια, εβδομαδιαία και < ισχυρά>μηνιαία τοπικά αντίγραφα ασφαλείας, καθώς και απομακρυσμένα αντίγραφα ασφαλείας. Για να εκτελέσετε όλα τα βήματα σε αυτό το άρθρο, πρέπει να είστε χρήστης root.

Βήμα 1: Εγκατάσταση αντιγράφου ασφαλείας Rsnapshot στο Linux

Η εγκατάσταση του rsnapshot με χρήση Yum και APT ενδέχεται να διαφέρει ελαφρώς, εάν χρησιμοποιείτε Red Hat και Διανομές που βασίζονται στο Debian.

Σε RHEL/CentOS

Πρώτα θα πρέπει να εγκαταστήσετε και να ενεργοποιήσετε το αποθετήριο τρίτων που ονομάζεται EPEL. Ακολουθήστε τον παρακάτω σύνδεσμο για εγκατάσταση και ενεργοποίηση στα συστήματα RHEL/CentOS. Οι χρήστες του Fedora δεν απαιτούν ειδικές διαμορφώσεις αποθετηρίου.

  1. Εγκατάσταση και ενεργοποίηση του EPEL Repository στο RHEL/CentOS 6/5/4

Μόλις ρυθμίσετε τα πράγματα, εγκαταστήστε το rsnapshot από τη γραμμή εντολών όπως φαίνεται.

# yum install rsnapshot
Σε Debian/Ubuntu/Linux Mint

Από προεπιλογή, το rsnapshot περιλαμβάνεται στα αποθετήρια του Ubuntu, ώστε να μπορείτε να το εγκαταστήσετε χρησιμοποιώντας την εντολή apt-get όπως φαίνεται.

# apt-get install rsnapshot

Βήμα 2: Ρύθμιση σύνδεσης χωρίς κωδικό πρόσβασης SSH

Για τη δημιουργία αντιγράφων ασφαλείας απομακρυσμένων διακομιστών Linux, ο εφεδρικός διακομιστής rsnapshot θα μπορεί να συνδεθεί μέσω του SSH χωρίς κωδικό πρόσβασης. Για να το πετύχετε αυτό, θα χρειαστεί να δημιουργήσετε ένα SSH δημόσιο και ιδιωτικό κλειδί για έλεγχο ταυτότητας στον διακομιστή rsnapshot. Ακολουθήστε τον παρακάτω σύνδεσμο για να δημιουργήσετε ένα δημόσιο και ιδιωτικό κλειδί στον εφεδρικό διακομιστή rsnapshot σας.

  1. Δημιουργία σύνδεσης χωρίς κωδικό πρόσβασης SSH χρησιμοποιώντας SSH Keygen

Βήμα 3: Διαμόρφωση του Rsnapshot

Τώρα θα χρειαστεί να επεξεργαστείτε και να προσθέσετε ορισμένες παραμέτρους στο αρχείο διαμόρφωσης rsnapshot. Ανοίξτε το αρχείο rsnapshot.conf με το πρόγραμμα επεξεργασίας vi ή nano.

# vi /etc/rsnapshot.conf

Στη συνέχεια, δημιουργήστε έναν κατάλογο αντιγράφων ασφαλείας, όπου θέλετε να αποθηκεύσετε όλα τα αντίγραφα ασφαλείας σας. Στην περίπτωσή μου, η τοποθεσία του εφεδρικού καταλόγου μου είναι \/data/backup/. Αναζητήστε και επεξεργαστείτε την ακόλουθη παράμετρο για να ορίσετε τη θέση δημιουργίας αντιγράφων ασφαλείας.

snapshot_root			 /data/backup/

Επίσης, καταργήστε το σχόλιο της γραμμής cmd_ssh, για να επιτρέψετε τη λήψη απομακρυσμένων αντιγράφων ασφαλείας μέσω SSH. Για να αφαιρέσετε το σχόλιο της γραμμής, αφαιρέστε το # μπροστά από την ακόλουθη γραμμή, ώστε το rsnapshot να μπορεί να μεταφέρει με ασφάλεια τα δεδομένα σας σε έναν εφεδρικό διακομιστή.

cmd_ssh			/usr/bin/ssh

Στη συνέχεια, πρέπει να αποφασίσετε πόσα παλιά αντίγραφα ασφαλείας θα θέλατε να κρατήσετε, επειδή το rsnapshot δεν είχε ιδέα πόσο συχνά θέλετε να τραβάτε στιγμιότυπα. Πρέπει να καθορίσετε πόσα δεδομένα θα αποθηκεύσετε, να προσθέσετε διαστήματα που θέλετε να διατηρήσετε και πόσα από το καθένα.

Λοιπόν, οι προεπιλεγμένες ρυθμίσεις είναι αρκετά καλές, αλλά παρόλα αυτά θα ήθελα να ενεργοποιήσετε το διάστημα \μηνιαία”, ώστε να μπορείτε επίσης να έχετε μακροπρόθεσμα αντίγραφα ασφαλείας. Επεξεργαστείτε αυτήν την ενότητα για να μοιάζει με την παρακάτω Ρυθμίσεις.

#########################################
#           BACKUP INTERVALS            #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc.      #
#########################################

interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3

Ένα ακόμη πράγμα που πρέπει να επεξεργαστείτε είναι η μεταβλητή ssh_args. Εάν έχετε αλλάξει την προεπιλεγμένη Θύρα SSH (22) σε κάτι άλλο, πρέπει να καθορίσετε αυτόν τον αριθμό θύρας του απομακρυσμένου διακομιστή δημιουργίας αντιγράφων ασφαλείας.

ssh_args		-p 7851

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

Δημιουργία αντιγράφων ασφαλείας τοπικών καταλόγων

Εάν έχετε αποφασίσει να δημιουργήσετε αντίγραφα ασφαλείας των καταλόγων σας τοπικά στο ίδιο μηχάνημα, η καταχώριση αντιγράφου ασφαλείας θα μοιάζει με αυτό. Για παράδειγμα, λαμβάνω αντίγραφα ασφαλείας των καταλόγων μου /tecmint και /etc.

backup		/tecmint/		localhost/
backup		/etc/			localhost/
Δημιουργία αντιγράφων ασφαλείας απομακρυσμένων καταλόγων

Εάν θέλετε να δημιουργήσετε αντίγραφα ασφαλείας καταλόγων απομακρυσμένου διακομιστή, τότε πρέπει να πείτε στο rsnapshot πού βρίσκεται ο διακομιστής και ποιοι κατάλογοι θέλετε να δημιουργήσετε αντίγραφα ασφαλείας. Εδώ λαμβάνω ένα αντίγραφο ασφαλείας του καταλόγου /home του απομακρυσμένου διακομιστή μου στον κατάλογο /data/backup στον διακομιστή rsnapshot.

backup		 :/home/ 		/data/backup/

Διαβάστε επίσης:

  1. Τρόπος δημιουργίας αντιγράφων ασφαλείας/συγχρονισμού καταλόγων χρησιμοποιώντας το εργαλείο Rsync (Remote Sync)
  2. Τρόπος μεταφοράς αρχείων/φακέλων χρησιμοποιώντας την εντολή SCP

Εξαίρεση αρχείων και καταλόγων

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

# vi /data/backup/tecmint.exclude

Λάβετε πρώτα τη λίστα των καταλόγων για τους οποίους θέλετε να δημιουργήσετε αντίγραφα ασφαλείας και προσθέστε ( – * ) για να εξαιρέσετε οτιδήποτε άλλο. Αυτό θα δημιουργήσει αντίγραφα ασφαλείας μόνο για όσα καταχωρίσατε στο αρχείο. Το αρχείο εξαίρεσης μου μοιάζει με το παρακάτω.

+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

Η χρήση της επιλογής εξαίρεσης αρχείου μπορεί να είναι πολύ δύσκολη λόγω της χρήσης της αναδρομής rsync. Έτσι, το παραπάνω παράδειγμά μου μπορεί να μην είναι αυτό που ψάχνετε. Στη συνέχεια, προσθέστε το αρχείο εξαίρεσης στο αρχείο rsnapshot.conf.

exclude_file    /data/backup/tecmint.exclude

Τέλος, έχετε σχεδόν τελειώσει με την αρχική διαμόρφωση. Αποθηκεύστε το αρχείο διαμόρφωσης /etc/rsnapshot.conf πριν προχωρήσετε περαιτέρω. Υπάρχουν πολλές επιλογές για εξήγηση, αλλά εδώ είναι το δείγμα αρχείου ρυθμίσεων.

config_version  1.2
snapshot_root   /data/backup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3
ssh_args	-p 25000
verbose 	2
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/backup/tecmint.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/tecmint/		localhost/
backup		/etc/			localhost/
backup		:/home/ 		/data/backup/

Όλες οι παραπάνω επιλογές και επεξηγήσεις επιχειρημάτων είναι οι εξής:

  1. config_version 1.2=Έκδοση αρχείου διαμόρφωσης
  2. snapshot_root=Εφεδρικός προορισμός για αποθήκευση στιγμιότυπων
  3. cmd_cp=Διαδρομή για την εντολή αντιγραφής
  4. cmd_rm=Διαδρομή για την αφαίρεση εντολής
  5. cmd_rsync=Διαδρομή προς rsync
  6. cmd_ssh=Διαδρομή προς SSH
  7. cmd_logger=Διασύνδεση εντολών διαδρομής προς το φλοιό στο syslog
  8. cmd_du=Εντολή χρήσης διαδρομής προς δίσκο
  9. διάστημα ανά ώρα=Πόσα ωριαία αντίγραφα ασφαλείας πρέπει να διατηρηθούν.
  10. διάστημα καθημερινά=Πόσα ημερήσια αντίγραφα ασφαλείας πρέπει να κρατήσετε.
  11. interval weekly=Πόσα εβδομαδιαία αντίγραφα ασφαλείας πρέπει να διατηρηθούν.
  12. interval monthly=Πόσα μηνιαία αντίγραφα ασφαλείας πρέπει να διατηρηθούν.
  13. ssh_args=Προαιρετικά ορίσματα SSH, όπως διαφορετική θύρα (-p )
  14. verbose=Αυτονόητη
  15. loglevel=Αυτονόητο
  16. logfile=Διαδρομή προς το αρχείο καταγραφής
  17. exclude_file=Διαδρομή προς το αρχείο εξαίρεσης (θα εξηγηθεί με περισσότερες λεπτομέρειες)
  18. rsync_long_args=Μεγάλα ορίσματα για μεταβίβαση στο rsync
  19. lockfile=Αυτονόητο
  20. αντίγραφο ασφαλείας=Πλήρης διαδρομή προς αυτό που θα δημιουργηθεί αντίγραφο ασφαλείας ακολουθούμενη από σχετική διαδρομή τοποθέτησης.

Βήμα 4: Επαληθεύστε τη διαμόρφωση Rsnapshot

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

# rsnapshot configtest

Syntax OK

Εάν όλα έχουν ρυθμιστεί σωστά, θα λάβετε ένα μήνυμα \Σύνταξη ΟΚ. Εάν λάβετε μηνύματα σφάλματος, αυτό σημαίνει ότι πρέπει να διορθώσετε αυτά τα σφάλματα πριν εκτελέσετε το rsnapshot.

Στη συνέχεια, κάντε μια δοκιμαστική εκτέλεση σε ένα από τα στιγμιότυπα για να βεβαιωθείτε ότι παράγουμε σωστά αποτελέσματα. Λαμβάνουμε την παράμετρο ωριαία για να κάνουμε μια δοκιμαστική εκτέλεση χρησιμοποιώντας το όρισμα -t (test). Αυτή η παρακάτω εντολή θα εμφανίσει μια αναλυτική λίστα με τα πράγματα που θα κάνει, χωρίς να τα κάνει πραγματικά.

# rsnapshot -t hourly
Δείγμα εξόδου
echo 2028 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /data/backup/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local /data/backup/hourly.0/localhost/ 
touch /data/backup/hourly.0/

Σημείωση: Η παραπάνω εντολή λέει στο rsnapshot να δημιουργήσει ένα αντίγραφο ασφαλείας ωριαία. Στην πραγματικότητα εκτυπώνει τις εντολές που θα εκτελέσει όταν το εκτελέσουμε πραγματικά.

Βήμα 5: Μη αυτόματη εκτέλεση του Rsnapshot

Αφού επαληθεύσετε τα αποτελέσματά σας, μπορείτε να καταργήσετε την επιλογή \-t” για να εκτελέσετε πραγματικά την εντολή.

# rsnapshot hourly

Η παραπάνω εντολή θα εκτελέσει το σενάριο δημιουργίας αντιγράφων ασφαλείας με όλες τις ρυθμίσεις παραμέτρων που προσθέσαμε στο αρχείο rsnapshot.conf και θα δημιουργήσει έναν κατάλογο backup και στη συνέχεια θα δημιουργήσει τη δομή καταλόγου κάτω από αυτόν που οργανώνει τα αρχεία μας. Αφού εκτελέσετε την παραπάνω εντολή, μπορείτε να επαληθεύσετε τα αποτελέσματα μεταβαίνοντας στον κατάλογο αντιγράφων ασφαλείας και στη λίστα της δομής του καταλόγου χρησιμοποιώντας την εντολή ls -l όπως φαίνεται.

# cd /data/backup
# ls -l

total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

Βήμα 6: Αυτοματοποίηση της διαδικασίας

Για να αυτοματοποιήσετε τη διαδικασία, πρέπει να προγραμματίσετε το rsnapshot να εκτελείται σε συγκεκριμένα χρονικά διαστήματα από το Cron. Από προεπιλογή, το rsnapshot συνοδεύεται από αρχείο cron στο /etc/cron.d/rsnapshot, εάν δεν υπάρχει, δημιουργήστε ένα και προσθέστε τις ακόλουθες γραμμές σε αυτό.

Από προεπιλογή, οι κανόνες σχολιάζονται, επομένως πρέπει να αφαιρέσετε το \#” μπροστά από την ενότητα προγραμματισμού για να ενεργοποιήσετε αυτές τις τιμές.

# This is a sample cron file for rsnapshot.
# The values used correspond to the examples in /etc/rsnapshot.conf.
# There you can also set the backup points and many other things.
#
# To activate this cron file you have to uncomment the lines below.
# Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly
30     3     * * *    root    /usr/bin/rsnapshot daily
0      3     * * 1    root    /usr/bin/rsnapshot weekly
30     2     1 * *    root    /usr/bin/rsnapshot monthly

Επιτρέψτε μου να εξηγήσω ακριβώς τι κάνουν οι παραπάνω κανόνες cron:

  1. Εκτελείται κάθε 4 ώρες και δημιουργεί έναν κατάλογο ωριαία στον κατάλογο /backup.
  2. Εκτελείται καθημερινά στις 3:30 π.μ. και δημιουργήστε έναν κατάλογο καθημερινό στον κατάλογο /backup.
  3. Εκτελείται εβδομαδιαία κάθε Δευτέρα στις 3:00 π.μ. και δημιουργείτε έναν κατάλογο εβδομαδιαία στην ενότητα / εφεδρικός κατάλογος.
  4. Εκτελείται κάθε μηνιαία στις 2:30 π.μ. και δημιουργείτε έναν μηνιαίο κατάλογο στον κατάλογο /backup.. li>

Για να κατανοήσετε καλύτερα πώς λειτουργούν οι κανόνες cron, σας προτείνω να διαβάσετε το άρθρο μας που περιγράφει.

  1. 11 Παραδείγματα Προγραμματισμού Cron

Βήμα 7: Αναφορές Rsnapshot

Το rsnapshot παρέχει ένα εξαιρετικό μικρό σενάριο Perl αναφοράς που σας στέλνει μια ειδοποίηση μέσω email με όλες τις λεπτομέρειες σχετικά με το τι συνέβη κατά τη δημιουργία αντιγράφων ασφαλείας των δεδομένων σας. Για να ρυθμίσετε αυτό το σενάριο, πρέπει να αντιγράψετε το σενάριο κάπου στο /usr/local/bin και να το κάνετε εκτελέσιμο.

# cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
# chmod +x /usr/local/bin/rsnapreport.pl

Στη συνέχεια, προσθέστε την παράμετρο –stats στο αρχείο σας rsnapshot.conf στην ενότητα μακροσκελής ορισμάτων του rsync.

vi /etc/rsnapshot.conf
rsync_long_args --stats	--delete        --numeric-ids   --delete-excluded

Τώρα επεξεργαστείτε τους κανόνες crontab που προστέθηκαν νωρίτερα και καλέστε το σενάριο rsnapreport.pl για να μεταβιβάσετε τις αναφορές σε καθορισμένη διεύθυνση ηλεκτρονικού ταχυδρομείου.

# This is a sample cron file for rsnapshot.
# The values used correspond to the examples in /etc/rsnapshot.conf.
# There you can also set the backup points and many other things.
#
# To activate this cron file you have to uncomment the lines below.
# Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" 
30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" 
0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" 
30     2     1 * *    root    /usr/bin/rsnapshot monthly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" 

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

SOURCE           TOTAL FILES	FILES TRANS	TOTAL MB    MB TRANS   LIST GEN TIME  FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/          185734	   11853   	 2889.45    6179.18    40.661 second   0.000 seconds

Σύνδεσμοι αναφοράς

  1. αρχική σελίδα rsnapshot

Αυτό είναι προς το παρόν, εάν παρουσιαστούν προβλήματα κατά την εγκατάσταση, στείλτε μου ένα σχόλιο. Μέχρι τότε, μείνετε συντονισμένοι στο TecMint για περισσότερα ενδιαφέροντα άρθρα σχετικά με τον κόσμο του ανοιχτού κώδικα.