Zurück zur Startseite

Wie erstelle ich ein Backup meines Root (V)Servers?

nine.ch bietet Ihnen S3 kompatiblen Speicherplatz (Backupspace) an, auf welchen Sie Daten Ihres Root (V)Servers sichern können. Zum erstellen der Backups empfehlen wir das Tool duplicity. Nachfolgend finden Sie eine kurze Einführung in duplicity.

Was ist duplicity?

duplicity hilft dabei, Backups eines Systems zu erstellen und diese auf einem anderen System oder Medium zu speichern. Hierbei können viele unterschiedliche Ziele für das Backup angegeben werden. Mit duplicity ist es ebenfalls möglich, verschlüsselte Backups zu erstellen. Hierbei werden die Daten mit GnuPG ver- und entschlüsselt.
Das Backup mit duplicity kann einfach über einen Aufruf mit den passenden Parametern angestossen werden und benötigt keine komplizierte Konfiguration.

Es gibt zudem unterschiedliche Frontends für duplicity. Ein Beispiel dafür ist duply. Weiterführende Informationen zu diesem finden Sie unter
https://www.thomas-krenn.com/de/wiki/Backup_unter_Linux_mit_duply

Wie wird Duplicity installiert?

Ubuntu

duplicity muss in der Version >= 0.7.x vorliegen, damit das Backup in Zusammenarbeit mit unserem S3-kompatiblen Storage funktioniert. Zudem wird ein zusätzliches Python-Modul benötigt.
Unter Ubuntu kann nur die Version 0.6x direkt aus dem offiziellen Ubuntu-Repository installiert werden. Deshalb wird für die Installation das Ubuntu-Repository von duplicity verwendet.
Dies kann mit folgenden Befehlen bewerkstelligt werden:

apt-get install software-properties-common
apt-get install python-software-properties
add-apt-repository ppa:duplicity-team/ppa

Danach kann duplicity installiert werden:

apt-get update
apt-get install duplicity

Zusätzlich muss nun noch das Packet python-boto installiert werden, bevor duplicity einsatzbereit ist:

apt-get install python-boto

Debian

Für Debian können die selben Pakete, wie für Ubuntu verwendet werden.
Zu beachten ist, dass nach dem Hinzufügen des zusätzlichen Repositories mittels

add-apt-repository ppa:duplicity-team/ppa

in der Datei /etc/apt/sources.list.d/duplicity-team-ppa-trusty.list, die Bezeichnung der Debianversion, durch “trusty” ersetzt werden muss.

Wie verwende ich duplicity?

Bevor ein Backup erstellt werden kann, müssen die Zugangsdaten als Umgebungsvariablen exportiert werden. Dies geschieht folgendermassen:

export AWS_ACCESS_KEY_ID='${ERHALTENER_ACCESS_KEY}'
export AWS_SECRET_ACCESS_KEY='${PASSWORT_ZU_ACCESS_KEY}'

Damit diese Daten nicht in der History der Konsole auftauchen, empfiehlt es sich, die beiden Befehle in einer versteckten Datei wie zum Beispiel /root/.backup.cred abzulegen. Danach kann einfach dieses Script mit source /root/.backup.cred aufgerufen werden, um die Variablen zu setzen.

Backup erstellen

Um ein Backup eines Verzeichnisses zu erstellen, genügt der folgende Befehl:

duplicity --log-file /var/log/duplicity.log --verbosity info --archive-dir=/var/tmp/duplicity --no-print-statistics --full-if-older-than 3D --no-encryption ${ZU_SICHERNDES_VERZEICHNIS} s3://backup-space.nine.ch/${HOSTNAME}/${PREFIX}

Wenn der obige Befehl in einem Cronjob, zum Beispiel täglich, ausgeführt wird, wird alle drei Tage ein vollständiges Backup des Verzeichnisses ${ZU_SICHERNDES_VERZEICHNIS} erstellt. Zwischen den drei Tagen werden inkrementelle Backups angelegt.
Zu beachten ist, dass so ein neuer “Bucket”, mit dem Namen ${HOSTNAME} erstellt wird. Die Variable ${PREFIX} stellt einen beliebigen Präfix, zur Wiedererkennung, der Backups dar. Sollte bei dem Befehl, der Errorcode 403 erscheinen, kann dies einer der beiden folgenden Gründe haben:

  1. Die Zugangsdaten (AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY) wurden nicht/falsch hinterlegt.
  2. Es existiert bereits ein Bucket, mit dem gewählten Namen. Wählen Sie bitte einen anderen Bucketname (im obigen Befehl lautet der Bucketname ${HOSTNAME}).

Alte Backups löschen

Um alte Backups, welche nicht mehr benötigt werden zu löschen, kann der folgende Befehl verwendet werden:

duplicity remove-all-but-n-full 3 --archive-dir=/var/tmp/duplicity  --log-file /var/log/duplicity.log --force --verbosity info --no-print-statistics s3://backup-space.nine.ch/${HOSTNAME}/${PREFIX}

So werden immer nur die neusten 3 vollständigen Backups des Servers behalten.

Backup wiederherstellen

Das letzte Backup kann folgendermassen wiederhergestellt werden:

duplicity --archive-dir=/var/tmp/duplicity restore s3://backup-space.nine.ch/${HOSTNAME}/${PREFIX} ${ZIEL}

Backups auflisten

Mit dem folgenden Befehl, können alle aktuell vorhandenen Backups aufgelistet werden:

duplicity collection-status --archive-dir=/var/tmp/duplicity s3://backup-space.nine.ch/${HOSTNAME}/${PREFIX}

Backups mit Verschlüsselung

Es ist durchaus möglich, mit duplicity auch verschlüsselte Backups zu erstellen. Hierbei werden Ihre Daten mittels GPG verschlüsselt.

PGP-Schlüsselpaar erstellen
Für die Verschlüsselung werden ein öffentlicher und ein privater Schlüssel benötigt. Diese können folgendermassen erstellt werden:

gpg --gen-key

GPG fragt dann nach, wie der neue Schlüssel erstellt werden soll. Hier sind folgende Angaben zu wählen:

  1. RSA and RSA
  2. >= 2048 (4096 empfohlen)
  3. Das gewünschte Ablaufdatum des Schlüssels (0 = immer gültig)
  4. Wenn “0” gewählt wurde, muss dies bestätigt werden.
  5. “Real name” kann z.B. auf den Servername gesetzt werden
  6. “Email address” leer lassen.
  7. “Comment” ebenfalls unausgefüllt lassen.
  8. Mit “O” (wie Okay) bestätigen.
  9. Kein Passwort setzen. (Dieses müsste bei jedem Backup im Klartext angegeben werden.)

Nach dem Erstellen des Schlüsselpaares, empfehlen wir, den privaten Schlüssel auch noch auf einem anderen Gerät aufzubewahren, da die Daten später nur mit diesem wieder entschlüsselt werden können.

Verschlüsseltes Backup erstellen
Um ein verschlüsseltes Backup zu erstellen, muss nur der oben erwähnte Backupbefehl wie folgt ergänzt werden:

  1. Vor den Befehl, muss env PASSPHRASE='' gesetzt werden
  2. Den Befehl um die Parameter --encrypt-key '${REALNAME/KEYID}' und --gpg-options '--trust-model=always' ergänzen. `${REALNAME/KEYID} stheht hierbei für den Namen oder die ID des GPG Keys.
  3. Den Parameter --no-encryption entfernen.

Der neue Befehl sieht dann etwa so aus:

env PASSPHRASE='' duplicity --log-file /var/log/duplicity.log --verbosity info --archive-dir=/var/tmp/duplicity --no-print-statistics --full-if-older-than 3D  --encrypt-key '${REALNAME/KEYID}' --gpg-options '--trust-model=always' ${ZU_SICHERNDES_VERZEICHNIS} s3://backup-space.nine.ch/${HOSTNAME}/${PREFIX}

Verschlüsseltes Backup wiederherstellen
Das wiederherstellen eines verschlüsselten Backups benötigt nur das zusätzliche Voranstellen von env PASSPHRASE='':

env PASSPHRASE='' duplicity --archive-dir=/var/tmp/duplicity --encrypt-key '${REALNAME/KEYID}' restore s3://backup-space.nine.ch/${HOSTNAME}/${PREFIX} ${ZIEL}

Weitere Informationen zu duplicity

Script Empfehlung

Um das Erstellen der Backups zu automatisieren, empfiehlt es sich, die Befehle für das Erstellen und das Löschen alter Backups in einem Script zusammen zu fassen.
Das Script, um zum Beispiel ein unverschlüsseltes Backup von /home zu erstellen, sieht folgendermassen aus:

#!/bin/bash

source `/root/.backup.cred`
if [ $? -ne 0 ]; then
    echo 'Could not source in credentials file' >&2
    exit 1
fi
duplicity --log-file /var/log/duplicity.log --verbosity info --archive-dir=/var/tmp/duplicity --no-print-statistics --full-if-older-than 3D --no-encryption /home s3://backup-space.nine.ch/${HOSTNAME}/home
duplicity remove-all-but-n-full 3 --archive-dir=/var/tmp/duplicity  --log-file /var/log/duplicity.log --force --verbosity info --no-print-statistics s3://backup-space.nine.ch/${HOSTNAME}/home

Dieses kann nun entweder direkt im Verzeichnis /etc/cron.daily/ abgelegt oder einfach als Cronjob eingetragen werden.

Datenbank-Backups

Da Datenbanken in den meisten Fällen nicht einfach mittels Kopieren der Daten gesichert werden können, empfiehlt es sich hier, einen Dump der Datenbanken zu erstellen. Der Dump kann dann wie die restlichen Daten mit duplicity gesichert werden.
Für die Dumps der Datenbanken empfehlen wir folgende Tools:

Haben Sie die gewünschten Informationen nicht gefunden?

Kontaktieren Sie unseren Support:

+41 44 637 40 40 support@nine.ch