Δημιουργώντας backup για το Drupal
Τα αντίγραφα ασφαλείας μάς επιτρέπουν να προστατεύσουμε τις ιστοσελίδες μας σε περίπτωση που κάτι πάει στραβά. Παρακάτω θα αναφέρουμε τρόπους λήψης backup για το Drupal, αν και κάποιοι από αυτούς μπορούν να χρησιμοποιηθούν και γενικότερα.
Προαπαιτούμενα
Ο web server μας πρέπει να είναι Linux ή *nix-like. Θα πρέπει να έχουμε πρόσβαση σε αυτόν μέσω ssh (secure shel), να έχουμε πρόσβαση στα cron jobs και επίσης να έχουμε βασικές γνώσεις linux. Φυσικά μας ενδιαφέρουν δύο πράγματα κατά τη λήψη αντιγράφων ασφαλείας σε Drupal αλλά και σε όλα τα CMSs: τα αρχεία και η βάση δεδομένων μας.
Χειροκίνητη διαδικασία
Για τα αρχεία: Κάνουμε εισαγωγή στο λογαριασμό μας μέσω ssh. Μεταβαίνουμε στον κατάλογο του οποίου τα αρχεία θέλουμε να κρατήσουμε.
cd mywebsite
Θα χρησιμοποιήσουμε την εντολή tar ως εξής:
tar -cvpzf mywebsite-backup.tgz .
Η τελεία στο τέλος είναι απαραίτητη. Η εντολή θα μας δημιουργήσει το συμπιεσμένο αρχείο mywebsite-backup.tgz που περιέχει όλους τους καταλόγους, υπό-καταλόγους και αρχεία του τρέχοντα καταλόγου, συμπεριλαμβανομένων και των κρυφών. Ο διακόπτης p εξασφαλίζει οτι στα αρχεία του συμπιεσμένου διατηρούνται τα δικαιώματα (owner, permissions).
Για τη βάση δεδομένων: Μια συνηθισμένη βάση δεδομένων του Drupal συχνά περιέχει και δεδομένα τα οποία δεν μας ενδιαφέρουν για τις ανάγκες του back-up, όπως πχ τα περιεχόμενα των πινάκων cache. Αυτά τα παραπανίσια δεδομένα μάλιστα συχνά καταλαμβάνουν πολύ χώρο. Για να εξασφαλίσουμε οτι το back up μας θα περιέχει μόνο τα απαραίτητα και οτι το encoding των δεδομένων θα διατηρηθεί, μπορούμε να χρησιμοποιήσουμε το εξαιρετικό plugin του Drupal, Back up and migrate. Το plugin είναι πολύ απλό στη χρήση, και χάρη στα έτοιμα presets μπορούμε να πάρουμε άμεσα ένα αντίγραφο ασφαλείας της βάσης μας, αμέσως μετά την εγκατάστασή του.
Αυτόματη διαδικασία
Η αυτόματη διαδικασία γίνεται μέσω cron jobs. Η πρόσβαση σε αυτά μπορεί να γίνει μέσα από τον πίνακα ελέγχου του web server μας (πχ cPanel) ή μέσω root access. Μάλιστα το cPanel μας ενημερώνει με email όταν κάποιο cron job δεν ολοκληρώθηκε σωστά για οποιονδήποτε λόγο. Θα πρέπει να δημιουργήσουμε ένα νέο cron job για το αντίγραφο ασφαλείας των αρχείων μας και ένα για αυτό της βάσης δεδομένων. Τα 2 αυτά θα πρέπει να εκτελούνται σε κοντινές χρονικές χτιγμές ώστε τα αρχεία και οι βάσεις των back-up να είναι "συγχρονισμένα". Φυσικά μπορούμε να ορίσουμε τα cron jobs να εκτελούνται όσο συχνά θέλουμε.
Για το αντίγραφο ασφαλείας των δεδομένων μας θα εισάγουμε στο cron job την εντολή
date=`date -I` ; tar -cpzf backup_$date.tgz ./public_html
Μπορούμε στη θέση του public_html να εισάγουμε όποιον κατάλογο επιθυμούμε. Το date stamp στο όνομα του αρχείου εξασφαλίζει οτι τα νέα αρχεία back-up δεν θα κάνουν overwrite τα παλιά.
Για το αντίγραφο ασφαλείας της/των βάσεων δεδομένων μας εισάγουμε στο cron job την εντολή
date=`date -I` ; mysqldump -u username -ppassword --all-databases | gzip > /home/myname/db-backup_$date.sql.gz
όπου username και password είναι το όνομα χρήστη και ο κωδικός που έχει πρόσβαση στη mysql βάση μας και myname το όνομα του λογασιαμού μας στο λειτουργικό σύστημα. Επειδή η εντολή mysqldump μερικές φορές παρουσιάζει προβλήματα με το encoding των δεδομένων, ελέγχουμε στο αρχείο db-backup.sql.gz την ακεραιότητα των δεδομένων μας.
Επαναφορά από backup
Η επαναφορά από τα αντίγραφα ασφαλείας μας, σε περίπτωση ανάγκης, είναι απλή υπόθεση. Για την αποκατάσταση των αρχείων μας, μέσω ssh δίνουμε την εντολή
tar -xvpzf back-up.tgz
Για την αποκατάσταση της βάσης μας, μπορούμε να χρησιμοποιήσουμε την εντολή
gunzip < db-backup.sql.gz | mysql -u username -ppassword dbname
ή να χρησιμοποιήσουμε την επιλογή import του γραφικού εργαλείου phpmyadmin που συνήθως βρίσκεται στο control panel του web server μας.
Leave a comment