ΕΛ/ΛΑΚ | creativecommons.gr | mycontent.ellak.gr |
freedom

Νέα από τον πλανήτη…planet.ellak.gr:Αυτόματα αντίγραφα ασφαλείας – backup στο Linux

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

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

Κάπου σε αυτή την κατηγορία είναι και η απλή αντιγραφή – επικόλληση αρχείων και φακέλων από ένα σημείο σε άλλο το οποίο και κάνει σχεδόν η πλειοψηφία των απλών χρηστών. Έχουν έναν εξωτερικό δίσκο και αφού το συνδέσουν, κάνουν σε αυτόν αντιγραφή τα αρχεία που θέλουν να κρατήσουν backup.

Σε αυτόν τον οδηγό, ακολουθώντας όσα μάθαμε στα μαθήματα shell Scripting φτιάξουμε ένα μικρό, απλό, εύχρηστο και αυτοματοποιημένο σύστημα δημιουργίας backup και θα το ονομάσουμε kissbup (Keep It Simple Stupid Backup)

Backup με KissBup

Πριν ξεκινήσουμε, θέλουμε ένα σύστημα :

  • απλό
  • μικρό και εύχρηστο
  • αυτόματο

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

Ανοίξτε έναν απλό κειμενογράφο π.χ. gedit και ξεκινάμε όπως ξεκινάμε κάθε script σε shell:

#!/bin/bash

αποθηκεύστε το ως kissbup.sh στον home κατάλογό σας.

Αποφασίζοντας τι θα κάνουμε backup

Ξεκινάμε αποφασίζοντας τι θα κάνουμε backup.

Αν π.χ. έχουμε έναν φάκελο στον προσωπικό μας κατάλογο που ονομάζεται BackupThis. Άρα η διαδρομή του φακέλου είναι το /home/username/BackupThis όπου φυσικά το username είναι του δικού σας χρήστη.

Αποθηκεύουμε αυτή την διαδρομή ως μια μεταβλητή (τι είναι μεταβλητές;) π.χ. SOURCE_DIR

#!/bin/bash

SOURCE_DIR="/home/username/BackupThis"

Αποφασίζοντας που θα στείλουμε τα backup

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

Έστω ότι στέλνουμε το backup μας στον φάκελο kissbups που έχουμε σε κάποιον εξωτερικό δίσκο π.χ. /media/diskos/kissbups/ . To αποθηκεύουμε σε μια μεταβλητή π.χ.

#!/bin/bash

SOURCE_DIR="/home/username/BackupThis"
DEST_DIR="/media/diskos/kissbups/"

Δίνοντας όνομα στα backup

Επειδή τα backup θα είναι αυτόματα, πρέπει και το όνομα που θα λαμβάνει το backup γίνεται αυτόματα. Ένα απλό κολπάκι είναι να προστίθεται στο όνομα π.χ. mybackup, η ημερομηνία δημιουργίας του. Αυτό μπορούμε να το πετύχουμε με την εντολή date +%d-%m-%Y

Ας το αποθηκεύσουμε σε μια μεταβλητή ΝΑΜΕ_BACKUP

#!/bin/bash

SOURCE_DIR="/home/username/BackupThis"
DEST_DIR="/media/diskos/kissbups/"
NAME_BACKUP="mybackup-$(date +%d-%m-%Y)"

Πόσα backup θα κρατάμε

Ένας τρόπος είναι να γίνονται καθημερινά backup κρατάμε των τελευταίων 10 ημερών. Ας το αποθηκεύσουμε στην μεταβλητή BACKUP_NUM

#!/bin/bash

SOURCE_DIR="/home/username/BackupThis"
DEST_DIR="/media/diskos/kissbups/"
NAME_BACKUP="mybackup-$(date +%d-%m-%Y)"
BACKUP_NUM="10"

Υλοποίηση του backup

Ήρθε η ώρα να συνδυάσουμε όλες τις μεταβλητές και να πούμε στο πρόγραμμά μας πως να φτιάχνει τα bakup.

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

tar -zcpvf KAPOY KATI

όπου,

  • tar = το πρόγραμμα που αρχειοθετεί
  • z = Αυτό θα πει στο tar να συμπιέσει το τελικό αρχείο για να μειώσει το μέγεθος του αρχείου tar
  • c = Δημιουργία
  • p = Διατήρηση δικαιωμάτων αρχείων/φακέλων.
  • v = Εμφάνιση διεργασίας
  • f = Επιτρέπει στο tar να έχει ένα όνομα που θα του δώσουμε εμείς
  • KAPOY = είναι το που θα στείλουμε τα backup
  • KATI = είναι το τι θέλουμε να κάνουμε backup

άρα με βάση τις μεταβλητές μας θα εχουμε:

#!/bin/bash

SOURCE_DIR="/home/username/BackupThis"
DEST_DIR="/media/diskos/kissbups/"
NAME_BACKUP="mybackup-$(date +%d-%m-%Y)"
BACKUP_NUM="10"

tar -zcpvf "$DEST_DIR"/"$NAME_BACKUP".tar.gz "$SOURCE_DIR"

Επίσης με την εντολή find με κάθε φορά το πρόγραμμά μας να ελέγχει και να διαγράφει τα backup είναι παλιότερα των 10 ημερών. Άρα σε συνδυασμό με τις μεταβλητές μας το πρόγραμμά μας θα είναι :

#!/bin/bash

SOURCE_DIR="/home/username/BackupThis"
DEST_DIR="/media/diskos/kissbups/"
NAME_BACKUP="mybackup-$(date +%d-%m-%Y)"
BACKUP_NUM="10"

tar -zcpvf "$DEST_DIR"/"$NAME_BACKUP".tar.gz "$SOURCE_DIR"
find "$DEST_DIR"/* -mtime +$BACKUP_NUM -exec rm {} \;

όπου στην find λέμε να κοιτάξει στον φάκελο όπου γίνονται backup "$DEST_DIR"/* να δει ποια είναι παλιότερα των 10 ημερών -mtime +$BACKUP_NUM και να τα διαγράψει -exec rm {} \;

Πειραματισμός πριν την αυτοματοποίηση

Είναι σημαντικό να πειραματιστείτε πριν την τελική υλοποίηση του έργου μας. Γιαυτό και αποθηκεύσαμε τις διαδρομές σε μεταβλητές ! Μπορείτε να δοκιμάσετε π.χ. έναν φάκελο στον (μικρό σε μέγεθος) να το κάνετε backup ένα άλλον φάκελο.

Αφού αλλάξετε τις διαδρομές στα SOURCE_DIR και DEST_DIR εκτελέσιμο το πρόγραμμα μας και τρέξτε το:

chmode +x kissbup.sh
./kissbup.sh

Αν πάτε στον φάκελο που ορίσατε να πηγαίνουν τα αντίγραφα θα δείτε ότι, δημιουργήθηκε ένα αρχείο mybackup-imerominia.tar.gz. Αν θέλετε να λαμβάνετε αντίγραφα ασφαλείας σε καθημερινή βάση, όπως είχαμε πει τότε πρέπει να εκτελείτε το πρόγραμμα αυτό χειροκίνητα κάθε μέρα, κάτι που δεν είναι καλή ιδέα.

Αυτοματοποίηση αντιγράφων ασφαλείας

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

Πρώτα θα μετακινήσετε αυτό το προγραμματάκι στον κατάλογο /bin και θα δώσετε δικαιώματα εκτέλεσης (αν δεν το είχατε κάνει):

sudo cp kissbup.sh /bin/kissbup.sh
sudo chmod +x /bin/kissbup.sh

στην συνέχεια θα πρέπει να χρησιμοποιήσουμε είτε το cronjob ή να φτιάξουμε systemd service για να τρέχει π.χ. το πρόγραμμά μας κάθε μέρα 11 το βράδυ. Στο παρόν οδηγό μας θα χρησιμοποιήσουμε τον cron.

Στο τερματικό μας τρέχουμε την εντολή crontab -e , και επιλέξτε οποιοδήποτε πρόγραμμα για επεξεργασία του αρχείου π.χ. vim και στο τέλος του αρχείου βάζουμε την παρακάτω γραμμή:

0 23 * * * /bin/kissbup.sh

To παραπάνω λέει ότι στο λεπτό 00 στις 23 κάθε μέρα να τρέξεις το kissbup.

Εάν επιθυμείτε να εκτελείται κάθε μέρα στις 13:00, η ​​καταχώρισή σας στο crontab θα έχει την εξής μορφή 0 13 * * * . Αν έχετε διαφορετικές ανάγκες, μπορείτε να δείτε κάποιο online crontab generator το οποίο βάζοντας τις ώρες, μέρες κλπ που θέλετε μπορείτε να προσθέσετε την σχετική ρύθμιση.

Αποθηκεύστε και κλείστε το αρχείο.

Download Kissbup

Όπως συμβαίνει και με τα άλλα προγράμματά που φτιάχνουμε, έτσι και το kissbup διαθέσιμο στο αποθετήριο λογισμικών του Cerebrux: Kissbup

Επίλογος

Πέρα από την σημαντικότητα των backup σημαντικό είναι επίσης να ελέγχετε ότι γίνονται τα αντίγραφα ασφαλείας αλλά και ότι μπορείτε να τα επαναφέρετε και να είναι όπως πρέπει να είναι.

Πηγή άρθρου: https://planet.ellak.gr/, https://cerebrux.net

Leave a Comment