Posts Tagged ‘gnupg’

Duplicity: Μια απλή κι ασφαλής λύση για backup σε Ubuntu intrepid 8.10

Posted in Linux & Open Source on January 22nd, 2009 by atma – Be the first to comment

Είχα αναφέρει και παλαιότερα το duplicity σαν λύση για backup. Το duplicity είναι βασισμένο στο καταπληκτικό rdiff-backup. Το duplicity έχει τις ίδιες δυνατότητες με την πρόσθεση της κρυπτογράφησης των δεδομένων μας. Έτσι έχουμε την δυνατότητα να αποθηκεύσουμε τα δεδομένα μας σε έναν απομακρυσμένο server μέσω ssh. Υποστηρίζει κι άλλα πρωτόκολλα επικοινωνίας πέραν του ssh που προτείνεται για μια τέτοια διαδικασία, για λόγους ασφαλείας.

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

Αρχικά καλό θα ήταν να κάνουμε ext2fs τον εξωτερικό σκληρό δίσκο. Εάν θέλετε να το κάνετε χρησιμοποιώντας ένα πρόγραμμα φιλικό προς τον χρήστη, εγκαταστήστε το gparted. Έπειτα επιλέξτε filesystem, προτείνω το ext3fs κι όχι κάποιο εκ των xfs, jfs, reiserfs, αλλά η επιλογή είναι δικιά σας, όπως και τα δεδομένα!

Έπειτα εγκαθιστούμε το duplicity:

atma@Humildus:$ sudo apt-get install duplicity
atma@Humildus:~$ duplicity --version
duplicity 0.4.12

Έπειτα ανοίγουμε το αρχείο .bashrc και βγάζουμε τα comments από το bash_aliases:

 (...)
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
(...)

Τώρα μπορούμε να βάλουμε όλα τα aliases που θέλουμε στο αρχείο .bash_aliases αφού αυτό θα διαβάζεται από το .bashrc κάθε φορά που θα ανοίγουμε ένα console.

Το αρχείο .bash_aliases είναι κάπως έτσι:

atma@Humildus:~$ cat .bash_aliases
# atma's aliases file
(...)
# backup aliases
alias backup='duplicity /home/atma file:///media/disk/backup'
alias backup-statistics='duplicity collection-status file:///media/disk/backup'
alias backup-verify='duplicity verify file:///media/disk/backup /home/atma'
alias backup-list-files='duplicity list-current-files  file:///media/disk/backup'
(...)

Όπως έχετε καταλάβει το directory που “κρατάει” το backup είναι το /media/disk/backup το οποίο είναι ο εξωτερικός USB δίσκος. Τα υπόλοιπα aliases είναι απλά και γρήγορα βοηθήματα για να μην γράφω ολόκληρη την εντολή κάθε φορά.

Το duplicity κάνει χρήση του GnuPG. Εάν έχουμε δημιουργήσει προσωπικό κλειδί GnuPG το duplicity θα κάνει αυτόματα χρήση του κλειδιού κι έτσι θα επιτύχουμε την μέγιστη δυνατή ασφάλεια, με την μη συμμετρική κρυπτογράφηση που προσφέρει το GnuPG. Υποθέτω ότι όσοι κάνουν εκτεταμένη χρήση της κρυπτογραφίας γνωρίζουν ότι εάν χαθεί το κλειδί τους για κάποιο λόγο από το $HOME/.gnupg directory χωρίς να έχουν αντίγραφο, όπως είναι φυσικό, χάνουν αυτόματα και την πρόσβαση στο backup τους! Οπότε κάντε μεγάλη προσοχή σε αυτήν την περίπτωση!

Παρόλα αυτά, εγώ δεν ήθελα να δημιουργήσω κλειδιά γι αυτόν τον χρήση, γιατί δεν χρησιμοποιώ τον email client σε αυτό το μηχάνημα. Οπότε το duplicity δημιούργησε μόνο του ένα .gnupg directory και κάνοντας συμμετρική κρυπτογράφηση στα αρχεία μου ζήτησε μόνο ένα κλειδί, το οποίο είναι το μόνο πράγμα που πρέπει να γνωρίζει ο χρήστης. Ακόμη κι αν χαθεί το $HOME/.gnupg δεν υπάρχει κανένα πρόβλημα, το μόνο που θα σας ζητηθεί για την ανάκτηση του backup σας είναι ο κωδικός ασφαλείας.

Ένα παράδειγμα backup με το duplicity:

atma@Humildus:~$ backup
GnuPG passphrase:
--------------[ Backup Statistics ]--------------
StartTime 1232647665.63 (Thu Jan 22 20:07:45 2009)
EndTime 1232647669.41 (Thu Jan 22 20:07:49 2009)
ElapsedTime 3.77 (3.77 seconds)
SourceFiles 3155
SourceFileSize 1985851007 (1.85 GB)
NewFiles 0
NewFileSize 0 (0 bytes)
DeletedFiles 0
ChangedFiles 3
ChangedFileSize 7557 (7.38 KB)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 3
RawDeltaSize 1443 (1.41 KB)
TotalDestinationSizeChange 1583 (1.55 KB)
Errors 0
-------------------------------------------------
atma@Humildus:~$ backup-statistics
Connecting with backend: LocalBackend
Archive dir: None
	
Found 0 backup chains without signatures.
	
Found a complete backup chain with matching signature chain:
-------------------------
Chain start time: Wed Jan 21 20:44:36 2009
Chain end time: Thu Jan 22 20:07:43 2009
Number of contained backup sets: 8
Total number of contained volumes: 435
 Type of backup set:                            Time:      Num volumes:
                Full         Wed Jan 21 20:44:36 2009               346
         Incremental         Wed Jan 21 21:07:44 2009                 1
         Incremental         Wed Jan 21 21:09:55 2009                 1
         Incremental         Wed Jan 21 21:14:42 2009                81
         Incremental         Wed Jan 21 21:30:10 2009                 1
         Incremental         Thu Jan 22 08:04:03 2009                 1
         Incremental         Thu Jan 22 19:25:24 2009                 3
         Incremental         Thu Jan 22 20:07:43 2009                 1
-------------------------
No orphaned or incomplete backup sets found.

Όπως βλέπεται πιο πάνω, ζητάει τον κωδικό1 κι αν τον καταχωρίσουμε σωστά, ξεκινάει η διαδικασία του backup. Το backup είναι αυξητικό ( incremental ) που σημαίνει ότι το πρόγραμμα ελέγχει τα αρχεία στο directory που έχουμε επιλέξει για backup και μεταφέρει μόνο τα καινούρια αρχεία ή αυτά που έχουν υποστεί αλλαγές. Αυτή είναι η προκαθορισμένη συμπεριφορά. Αυτό γίνεται κυρίως για λόγους ταχύτητας και bandwidth όταν μιλάμε για απομακρυσμένο server. Εάν για κάποιο θέλουμε full backup αρκεί να βάλουμε το flag -full στο duplicity.

Προσωπικά, το backup θέλω γίνεται σε καθημερινή βάση, αυτόματα προσθέτω αυτό το script στον κατάλογο /etc/daily.cron/daily-backup:

atma@Humildus:~$ cat /etc/cron.daily/daily-backup
#!/bin/sh
# take a backup every day to avoid bubbles troubles!
PASSPHRASE=PASS su atma -c 'duplicity /home/atma file:///media/disk/backup'

Τώρα ξέρω ότι το duplicity θα εκτελείτε σε καθημερινή βάση από το σύστημα. Το Flag “PASSPHRASE=PASS” υποστηρίζεται από το duplicity για να μπορούν τα backup να αυτοματοποιηθούν. Είναι ο κωδικός του κλειδιού GnuPG. Στην περίπτωση μου δεν πειράζει διότι θεωρώ ασφαλές το μηχάνημα. Για κάποιον που χρησιμοποιεί προσωπικό κλειδί ασφαλείας πρέπει οπωσδήποτε να το αποφύγει αυτήν την λύση! Η μόνη λύση σε αυτήν την περίπτωση είναι να να παίρνει χειροκίνητα ο χρήστης backup, αλλιώς το κλειδί του κινδυνεύει σε τέτοιο βαθμό που χάνει το νόημα ύπαρξης του.

Επειδή όμως τα logs δείχνουν ότι το cron εκτελείτε στις 8:04 κάθε πρωί δεν μου κάνει. Το αφήνω όπως είναι και προσθέτω άλλο ένα crontab entry στον χρήση atma.

atma@Humildus:~$ crontab -l
# m h  dom mon dow   command
5 23 * * * /etc/cron.daily/daily-backup

Το duplicity έχει πάρα πολλές δυνατότητες για επιλογή καταλόγων που θέλουμε να πάρουμε ή όχι backup. Για παράδειγμα σίγουρα πολλοί δεν θα θέλουν να έχουν σε κρυπτογραφημένο backup τα mp3 τους. Αρκεί να κάνουν ένα –exclude /home/user/mp3directory όπως δείχνει το manual page του duplicity.

  1. Όταν κάνουμε χρήση GnuPG για κρυπτογράφηση, ο κωδικός μπορεί να είναι μια λέξη ή και μία πρόταση ολόκληρη του τύπου: “40 guys from Livadeia are going to take over, The Tripolitsa” []

Convalesco is using WP-Gravatar