Verschlüsseltes Backup mit ftplicity – Teil 1
Backups sind so lebenswichtig wie die Luft zum Atmen, wie der Strom für den Server.
Die meisten Web- bzw. Hostingdienstleister bieten in der Regel Speicherplatz auf einem FTP-Server an – einen FTP-Server, auf den viele andere Kunden Zugriff haben. Wer sonst noch Zugang zu diesem Server hat … man weiß es nicht. Daher ist man gut beraten, wenn man seine Daten dort nicht ungeschützt ablegt. Ein sehr hilfreiches Tool für diese Aufgabe ist ftplicity. Ftplicity legt mit Hilfe von GnuPG und duplicity verschlüsselte Backups auf einem FTP-Server ab.
Zuerst ggf. noch nicht installierte, benötigte Pakete installieren:
apt-get install python-dev librsync-dev ncftp python-gnupginterface python-pexpect
Danach holen wir uns duplicity an Bord:
cd /usr/src wget http://savannah.nongnu.org/download/duplicity/duplicity-0.5.02.tar.gz tar xfvz duplicity-0.5.02.tar.gz cd duplicity-0.5.02 python setup.py install
Ich habe leider die Feststellungmachen müssen, daß die z.Zt. aktuelle Version 0.5.0.6 mit Debian etch leider nicht funktioniert, daher die v0.5.0.2. Für Hinweise, wie die aktuelle Version unter etch zum Laufen gebracht werden kann, würde ich mich freuen.
Wenn die Installation ohne Fehler durchgelaufen ist, kümmern wir uns um den GPG-Schlüssel:
gpg --gen-key
Die Schlüsselart, welche als standard eingestellt ist (DSA und Elgamal) ist in Ordnung und kann mit [enter] bestätigt werden.
Die Standardschlüsselgröße 2048 reicht im Regelfall auch aus, wer möchte, kann auf 4096 erhöhen.
Damit wir nicht vergessen, die Schlüssel rechtzeitig zu verlängern, wählen wir auch bei der Gültigkeit den Standard, also „läuft niemals ab“. Diese Auswahl noch einmal mit y bestätigen.
Um den Schlüssel leichter identifizieren zu können, vergeben wir einen Namen und eMail-Adresse, ggf. auch einen Kommentar. Wenn die Angaben in Ordnung sind, wird mit O bestätigt.
Zum Abschluß muß ein Passwort für den Schlüssel vergeben werden. Bitte gut merken! Danach wird der Schlüssel berechnet. In der Ausgabe von gpg notieren wir uns die Schlüssel-ID, welche im folgenden als zufälliges Beispiel fett geschrieben steht.
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 57FG85AC marked as ultimately trusted
public and secret key created and signed.
Jetzt geht es weiter mit fplicity.
cd .. wget http://heanet.dl.sourceforge.net/sourceforge/ftplicity/ftplicity_1.4.1b.tgz tar xfvz ftplicity_1.4.1b.tgz cp ftplicity_1.4.1b/ftplicity /usr/local/bin
Das ging kurz und schmerzlos. Jetzt können wir uns ein Profil für das Backup anlegen.
ftplicity backup_profile create chmod 600 /root/.ftplicity/backup_profile/conf nano /root/.ftplicity/backup_profile/conf
Den Namen backup_profile habe ich frei gewählt, hier können nach Belieben andere Bezeichnungen verwendet werden. In die Config-Datei werden gleich zu Anfang die GPG-Schlüssel-ID und das dazu passende Passwort eingetragen, darunter die Zugangsdaten und das Zielverzeichnis vom FTP-Server. Wichtig ist auch der SOURCE-Eintrag, dort wird das Wurzelverzeichnis eingetragen, ab wo gesichert wird. „/“ für das gesamte Dateisystem, „/home“ z.B. nur für die Userverzeichnisse. Mehr dazu im Folgenden.
Bei GPG_OPTS kann die Komprimierung eingeschaltet werden. Hierzu einfach den ‚#‘ vor der Zeile entfernen.
GPG_OPTS=‘–compress-algo=bzip2 –bzip2-compress-level=9′
Die weiteren Parameter sind eigentlich gut erklärt. Folgender Parameter sollte jedoch noch geändert werden:
VOLSIZE=250
DUPL_PARAMS=“$DUPL_PARAMS –volsize $VOLSIZE “
VOLSIZE gibt die Größe der einzelnen Sicherungsdateien an. Die Größe sollte nicht zu klein, aber auch nicht zu groß gewählt werden. Bei zu kleinen Dateigrößen werden für ein größeres Backup sehr viele Dateien erzeugt, bei zu großen Dateien kann es Übertragungsprobleme geben und das Backup wird mit einer Fehlermeldung (broken pipe) abgebrochen. Je nach Verbindung ist eine Größe von 250 bis 500 MB angebracht. Nicht vergessen, bei der Zeile DUPL_PARAMS= […] unter VOLSIZE das ‚#‘ zu entfernen.
Wer den Komfort von ftplicity nutzen möchte, aber auf die Verschlüsselung verzichten will, kann in der letzten Zeile der conf-Datei folgendes eintragen:
DUPL_PARAMS=“$DUPL_PARAMS –no-encryption“
So wird das Backup nicht verschlüsselt.
Eine weitere wichtige Datei ist die exclude-Datei. Hier können Dateien und Verzeichnisse angegeben werden, welche nicht gesichert werden sollen. Das Thema eclude bzw. include ist recht komplex und ist im Netz vielfach beschrieben, daher hier nur ein kleines Beispiel einer exclude-Datei.
nano /root/.ftplicity/backup_profile/exclude
+ /etc
+ /var/www
– /
Als SOURCE hatten wir „/“ angegeben, also das Wurzelvereichnis, es würden also alle Dateien gesichert werden. In diesem Beispiel werden nur die Verzeichnisse /etc und /var/www inklusive ihrer Unterverzeichnisse, also z.B. /var/www/vhost/domain.tld, gesichert, „/“ wird an letzter Stelle (!) wieder komplett ausgeschlossen. Es werden nur die Verzeichnisse, welche explizit mit „+“ angegeben wurden, gesichert. Im umgekehrten Fall kann man auch einzelne Verzeichnisse, Dateien oder Dateitypen ausschließen.
Es ist Zeit für einen ersten Probelauf:
ftplicity backup_profile backup --preview
Werden keine Fehlermeldungen ausgeworfen, dann kann es losgehen. Einfach den preview-Schalter entfernen.
ftplicity backup_profile backup
Sobald das Backup fehlerfrei durchgelaufen ist, können wir den Status der Backups überprüfen.
ftplicity backup_profile status
Hier werden die Anzahl der Volumes und die einzelnen Backups (full, incremental) angezeigt, ggf. auch unvollständige Backups.
War das Backup erfolgreich, können die gesicherten Dateien mit
ftplicity backup_profile list
angezeigt werden. Da es im Normalfall mehrere Tausend Dateien sind, ist es ratsam, die Ausgabe in eine Datei umzuleiten.
ftplicity backup_profile list > output.txt
Im zweiten Teil beschäftige ich mich mit dem Einrichten eines cron-Jobs für tägliche Backups sowie mit der Wiederherstellung von Dateien.
sehr gute beschreibung und funktioniert mit dem neuen duply genauso. was vielleicht noch fehlt ist der cron job.