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

Υπάρχουν αναρίθμητα λογισμικά αντιγράφων ασφαλείας με γραφικό περιβάλλον ή όχι, με εμπορικό ή όχι χαρακτήρα, με έξυπνους ελέγχους για διπλότυπα αρχεία αλλά και λογισμικά που αφορούν τους οικιακούς χρήστες ή τις εταιρείες. Μερικά τα έχουμε δείς και εδώ:
- TimeShift: Αυτόματο backup και επαναφορά του Linux με ένα κλικ
- Video: Lucky Backup για αντίγραφα ασφαλείας με Ελληνική υπογραφή
- Video: Deja Dup για εύκολη δημιουργία αντιγράφων ασφαλείας των αρχείων μας
- BackupPC: Για να έχετε το κεφάλι σας ήσυχο
Κάπου σε αυτή την κατηγορία είναι και η απλή αντιγραφή – επικόλληση αρχείων και φακέλων από ένα σημείο σε άλλο το οποίο και κάνει σχεδόν η πλειοψηφία των απλών χρηστών. Έχουν έναν εξωτερικό δίσκο και αφού το συνδέσουν, κάνουν σε αυτόν αντιγραφή τα αρχεία που θέλουν να κρατήσουν 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