System Backup mit Duplicity
Auf folgendem System getestet:
Debian Lenny
Zuerst loggen wir uns per SSH auf unserem Server ein.
Wir updaten das System:
Danach installieren wir uns Python sowie librsync, lftp und ncftp
aptitude install python-dev
aptitude install librsync-dev
aptitude install ncftp
aptitude install lftp
Anschliesend laden wir uns Duplicity runter
cd /tmp
wget http://launchpad.net/duplicity/0.6-series/0.6.08b/+download/duplicity-0.6.08b.tar.gz
Wenn wir das gemacht haben, entpacken und installieren wir duplicity
Jetzt erstellen wir uns einen GPG Key
(beim kopieren aufpassen, lieber von Hand eingeben)
Alle nun kommenden Fragen bestätigen wir durch das drücken unserer [ENTER] Taste.
Bis folgende Frage auftauch:
Is this correct? (y/N) Das bestätigen wir mit y
Anschliesend gibst du dort die geforderten Eingaben an (Dein Name, Email Adresse etc.
Bis folgende Frage kommt:
ZitatChange (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
Dort bestätigen wir alles mit O
Jetzt muss eine Passphrase angegeben werden - sprich Passwort deiner wahl angeben und bestätigen. - GUT MERKEN!
Anschliesend wird der GPG Key erstellt.
(Das kann ein weilchen dauern, um das ganze zu beschleunigen hilft es eine 2te Konsole zu öffnen und ein paar Eingaben zu tätigen)
Sobald der Key erstellt wurde, erhaltet ihr so eine Aussage:
ZitatAlles anzeigengpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key XXXXXXX marked as ultimately trusted
public and secret key created and signed.gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 1024D/219D46A7 2010-07-09
Key fingerprint = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
uid Benutzername (Kommentar) <email@adresse.de>
sub 2048g/D6579F01 20XX-XX-XX
Hier müsst ihr euch den Key in folgender Zeile merken:
Zitatgpg: key XXXXXXX marked as ultimately trusted
Danach installieren wir uns Duplicity Wrapper Script:
cd /tmp
wget http://sourceforge.net/projects/ftplicity/files/duply%20%28simple%20duplicity%29/1.5.x/duply_1.5.2.3.tgz/download
tar xvzf duply_1.5.2.3.tgz
cp duply_1.5.2.3/duply /usr/local/bin
Darauf erstellen wir uns ein Backup Profil:
(ProfilName durch den gewünschten Namen ersetzen z.B. Server1)
Jetzt passen wir unsere Config Datei an:
Und passen in der Datei folgende Zeilen an:
ZitatGPG_KEY='_KEY_ID_'
GPG_PW='_GPG_PASSWORD_'
Statt _KEY_ID_ gebt ihr euren GPG Key ein.
Statt _GPG__ gebt ihr eure Passphrase ein, die Ihr beim erstellen des GPG Keys eingegeben habt.
Danach ersetzen wir in der Conf folgende Zeile:
Mit:
TARGET='ftp://FTPBenutzer@FTPserverhostname/BackupVerzeichniss/'
TARGET_PW='FTPBenutzerPasswort'
(Natürlich alle Angaben bei euch anpassen)
Wenn ihr das gemacht habt, passen wir noch folgende Angabe an:
Hier geben wir an, welche Verzeichnisse wir sichern wollen.
In unserem Beispiel sichern wir den gesamten Server geben dort also folgendes an:
Wir speichern die Datei ab.
Der Datei geben wir jetzt die richtigen Rechte
Anschliesend erstellen wir uns das Backup Verzeichniss, welches wir in der Config angegeben haben auf unserem FTP Backup Space
(Natürlich alle Angaben bei euch anpassen)
Wenn ihr anschliesend enter drückt müsste das ganze so aussehen:
Zitatlftp ftpbenutzername:ftppasswort@ftpserverhostname.de:~>
Jetzt gebt ihr folgendes ein:
(Das BackupVerzeichniss, dass ihr vorher in der Config angegeben habt).
Nun schliesen wir die verbindund durch die Eingabe von
Da wir den ganzen Server sichern wollen, müssen wir noch eine exclude Datei anlegen, die bestimmte Verzeichnisse vom Backup ausschliest, da das Backup sonst Fehlerhaft wird.
Dort geben wir folgendes ein:
/boot
/dev
/initrd
/lib
/media
/mnt
/proc
/src
/sys
/tmp
/var/tmp
/var/run
/var/spool
Alles anzeigen
Anschliesend speichern wir die Datei ab und geben Ihr die passenden Rechte:
Danach legen wir erstmal ein Full Backup an:
(ProfilName wieder anpassen)
Sobald das Backup durch ist, legen wir uns einen Cronjob an, der folgendes bewirkt:
* 1 mal im Monat ein Full Backup
* alle 12 Stunden ein inkrementelles Backup
* Veraltete Backups werden gelöscht (älter als 1 Monat)
also geben wir folgendes ein:
und fügen folgenden Inhalt ein:
# run the (incremental) backup every 12 hours!
00 */12 * * * /usr/local/bin/duply ProfilName backup
# do a full backup once per month & delete old backups
27 3 1 * * /usr/local/bin/duply ProfilName full && /usr/local/bin/duply ProfilName purge --force
(ProfilName wieder anpassen)
Und speichern das ganze wieder ab.
Und das wars auch schon, die Backups werden anschliesend immer automatisch erstellt und gelöscht (sofern veraltet) und jeder Admin kann beruhigt schlafen ![]()
------
Wer vor einem Backup noch seine gesamten MYSQL Datenbanken backuppen will, muss folgendes machen:
(ProfilName natürlich wieder anpassen)
Dort fügen wir folgendes ein:
DEINMYSQLROOTPASSWORT dort schreibst du natürlich dein Mysql Root Passwort hin.
Zum schluss machen wir die Datei ausführbar:
(ProfilName natürlich wieder anpassen)
Das ganze bewirkt, dass jetzt immer vor dem Backup alle Mysql Datenbanken im Ordner /mysqldump/ gesichert werden.
Beachte dabei aber, dass das Backup die Mysql Datenbank während des Backups sperrt, damit keine Inkonsistenz entsteht.
Sprich Websites die auf die Datenbank zugreifen, werden eben jene für den Dump nicht erreichen können.
Bei kleinen Datenbanken geht das allerdings sehr schnell, so dass das ganze nicht ganz so schlimm ist.
-------
Zum Schluss noch ein paar Beispiel befehle:
Veraltete Backups anzeigen und löschen:
Komplettes Backup nach /tmp zurückspielen:
z.B. die Datei test.php von vor 2 Tagen in /tmp wiederherstellen:
Zu Duply:
Durch die Eingabe von
erhaltet ihr eine Übersicht an Befehlen
zusätzliche Infos:
http://duplicity.nongnu.org/
Viel Erfolg ![]()