Backup auf S3 Storage mit Duplicity/Duply

Der Amazon (AWS) S3 Speicher wird gerne als unkompliziertes Backup für seine Daten verwendet.
Allerdings sollte dann -da die Daten auf fremden Servern gespeichert sind- auf jeden Fall verschlüsselt erfolgen.
Mit Duply, welches ein Wrapper für Duplicity ist geht das ganz einfach.

Inhalt

Bucket anlegen

Als erstes muss bei Amazon (oder einem anderen S3-Storage Anbieter) ein Bucket angelegt- und der Access-/Secret Key notiert werden.

GPG key generieren

Zunächst muss ein GPG key für die Verschlüsselung generiert werden.

Und um genügend entropy dafür zu haben wird es in den meisten Fällen nötig sein die rng-tools zu installieren.

yum install gpg rng-tools
gpg --gen-key

Bei der Ausgabe ist „XXXXXXXX“ der GPY key; das Passwort ist die eingegebene Passphrase:

gpg: key XXXXXXXX marked as ultimately trusted

[stextbox id=“note“ caption=“Hinweis“]
Falls später beim Backup die Meldung erscheint:

Volume was signed by key XXXXXXXXXXXXXXXX, not YYYYYYYY

dann muss man in der duply-Konfiguration weiter unten als GPG_KEY die ersten 16 Zeichen des Wertes für: „Key fingerprint“ angeben.
[/stextbox]

Installation

Nun müssen die Pakete Duplicity und Duply installiert werden:

yum install duply duplicity

Konfiguration

Profil erstellen

duply 'backup' create

In der nun erstellten Datei: /etc/duply/backup/conf müssen die folgenden Werte angepasst werden:

GPG_KEY='_KEY_ID_'
GPG_PW='_GPG_PASSWORD_'
 
TARGET='s3://aws.amazon.com/backup'
 
export AWS_ACCESS_KEY_ID='_ACCESS_KEY_'
export AWS_SECRET_ACCESS_KEY='_SECRET_KEY_'
 
SOURCE='/backup/path'
 
MAX_AGE=1M
MAX_FULL_BACKUPS=4
MAX_FULLS_WITH_INCRS=1

Zuletzt sollte noch eine exclude Liste (z.B. für /sys/, /proc/, /mnt/, usw.) angelegt werden:
/etc/duply/backup/exclude

- /proc/*
- /sys/*
- /mnt/*

Cronjob

Für das regelmässige Backup muss nun noch ein cronjob erstellt werden:

0 0 * * 7   /usr/bin/duply backup full_verify_purge --force > /var/log/duply.log 2>&1
0 0 * * 1-6 /usr/bin/duply backup incr                      > /var/log/duply.log 2>&1

[stextbox id=“note“ caption=“Hinweis“]
Das: „full_verify_purge“ ist in duplicity ein „neutral separator“ (es wird also nicht der Task „full_verify_purge“ ausgeführt, sondern die DREI Tasks: full, verify und purge nacheinander) und würde sich in bash so übersetzen lassen:
duply backup full ; duply backup verify ; duply backup purge –force

Damit ist auch ein sogenanntes „conditional OR“ möglich, indem man die Minuszeichen durch underscores (_) ersetzen würde.
Beispielsweise: full_verify_purge würde sich in bash so übersetzen lassen:
duply backup full || duply backup verify || duply backup purge

Ein Pluszeichen (+) wäre demzufolge ein „conditional AND“ (wird nur ausgeführt wenn der letzte Befehl erfolgreich war) und entspräche in der bash dem „&&“.
[/stextbox]

In dieser Konfiguration wird Sonntags um 0:00 ein Full-Backup erstellt und alte Backups gelöscht. Montag bis Samstag wird jeden Tag ein inkrementelles Backup durchgeführt. Neue Cronjobs können mit crontab -e erstellt werden. Hier ist anzumerken, dass für alle Kommandos und Konfigurationsdateien der absolute Pfad angegeben werden muss.

[stextbox id=“note“ caption=“Hinweis“]
Anstelle des Profils (backup) könnte man auch den komplette Pfad zur Konfiguration angeben, z.B.:

0 0 * * 7 /usr/bin/duply /root/.duply/backup full_verify_purge –force

[/stextbox]

Wiederherstellung

Zum Wiederherstellen (restore) können folgende Befehle verwendet werden:

Das letzte Backup nach /tmp/duply-restore/ wiederherstellen:

duply backup restore /tmp/duply-restore/

Die Datei /etc/passwd von vor 4 Tagen nach /tmp/duply-restore/ wiederherstellen:

duply backup fetch etc/passwd /tmp/duply-restore/  4D

Monitoring

Der Status des backups kann mittels:

duply backup status

abgefragt werden.

Für das Überwachen mit icinga kann das Script check_duply verwendet werden.

Quellen

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

2 thoughts on “Backup auf S3 Storage mit Duplicity/Duply”

  1. Hallo Steven,
    danke für Dein Tutorial.

    Ich hätte jedoch einen Hinweis/Rückfrage zu Deinem Hinweiskasten bzgl. der Cron-Jobs. Du schreibst, dass „Das: full_verify_purge ist in duplicity ein conditional OR (wird also nur ausgeführt wenn der vorherige Aufruf fehlgeschlagen ist)“. Bist Du Dir da sicher? Lt. man-Page ist der Underscore:
    _ (underscore)
    neutral separator

    Ein conditional OR wäre das Minus-Zeichen:
    – (minus sign), _or_
    conditional OR; the next command will only be executed if the previous failed

    Zumal Du ja auch schreibst, dass sonntags „ein Full-Backup erstellt und alte Backups gelöscht“ werden. Das Löschen/purge würde jedoch bei ‚conditional OR‘ und einem erfolgreich verlaufendem Full-Backup ja gar nicht stattfinden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert