2 – Installieren und Einrichten

Dieser Beitrag ist Teil 2 von 3 in der Serie Duplicity/Duply mit ProxmoxVE/VZDump

Anmerkung

Dies soll eine Copy&Paste Anleitung darstellen mit Ziel eine standalone ProxmoxVE Installation um Duply/Duplicity zu erweitern.

Beispielwerte wie IP-Adressen, Zugangsdaten und KEY-ID´s müssen durch eigene ersetzt werden!

Durchführung

Duply installieren, installiert auch duplicity:

apt-get install duply

Duply verzeichnis in etc erstellen, damit alle Konfigurationen dort erstellt werden und nicht im Userverzeichnis:

mkdir /etc/duply

Duply Konfiguration erstellen mit Hostnamen:

duply "pve_$HOSTNAME" create

Als nächstes muss damit die Backups verschlüsselt werden können ein GPG-Key erstellt werden:

gpg --gen-key

Hier ist es euren Sicherheitsanforderungen überlassen was ausgewählt wird, das erstellen kann sehr lange dauern.
Für den nächsten Schritt benötigt ihr die Passphrase welche für den GPG-Key vergeben wurde sowie die GPG-Key ID, die ID wird nach der erstellung im folgenden Feld angezeigt (Fett):


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 1024R/A9598270 2016-11-01
Key fingerprint = A2C4 ED3B C7BC C46D D967 6A83 7C7A 6AC0 A959 8270
uid Example Tincit <example@tincit.de>
sub 1024R/A85920FB 2016-11-01

Wir bearbeiten nun die duply config:

nano /etc/duply/pve_$HOSTNAME/conf

In diesen beiden Zeilen wird nun die eben erlangte GPG-Key ID und die Passphrase eingetragen:

GPG_KEY='A9598270'
GPG_PW='example'

In der Zeile „Target“ wird das Backupziel angegeben, im Beispiel FTP:

TARGET='ftp://tincit:example@10.123.10.205/'

In der Zeile „Source“ muss das ProxmoxVE Dump Verzeichnis angebeben werden aus dem später die Backups gesichert werden sollen.

SOURCE='/var/lib/vz/dump'

In diesen Beispiel wollen wir das mindestens jede Woche ein Vollbackup erstellst wird jedoch insgesamt ein Monat vorgehalten wird, das erreichen wir mit folgenden Einträgen:

MAX_AGE=1M
MAX_FULLBKP_AGE=1W
DUPL_PARAMS="$DUPL_PARAMS --full-if-older-than $MAX_FULLBKP_AGE "

Danach Speichern und verlassen wir die Duply Konfiguration.

Jetzt bearbeiten wir die exclude Datei der duply Konfiguration damit auch wirklich nur abgeschlossene VZDump Backups und keine temporären Dateien übertragen werden.

nano /etc/duply/pve_$HOSTNAME/exclude

Folgende Zeilen werden angefügt:

+ **.gz
+ **.lzo
+ **.vma
+ **.tar
- **

Danach Speichern und verlassen.
Das sagt Duplicity nur Dateien mit diesen vier Endungen zu beachten.

Nun werden wir einmal status über Duply aufrufen um zu testen ob unsere Konfiguration so weit richtig ist:

duply /etc/duply/pve_$HOSTNAME status

In unseren Fall bekommen wir einen Fehler:

Start duply v1.9.1, time is 2016-11-01 19:36:34.
Using profile '/etc/duply/pve_example'.

Sorry. A fatal ERROR occured:


Protocol 'ftp' needs ncftp. Installed und available in path?
PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'

Für das FTP Backup benötigten wir ncftp installiert, je nach gewählten Backuptarget müssen evtl. noch andere Abhängkeiten installiert werden.

Wir installieren ncftp und führen nochmals status aus.

apt-get install ncftp
duply /etc/duply/pve_$HOSTNAME status

Jetzt sollte Duply durchgelaufen sein und uns Informieren das die GPG-Keys erfolgreich exportiert wurden sowie aktuell keine Backups in der Chain gefunden wurden.

WICHTIG
Sollten noch weitere Fehler auftauchen müssen diese behoben werden bevor fortgefahren wird.
Der Ordner /etc/duply/pve_$HOSTNAME enthält jetzt alle Daten die nötig sind um das Backup von jeder Maschine welche das Backuptarget erreichen kann wiederherzustellen, aus diesen Grund sollte er Kopiert und sicher aufbewahrt werden.

Jetzt müssen wir Duply in VZDump integrieren, dafür öffnen wir zuerst die gloable VZDump Konfiguration.

nano /etc/vzdump.conf

Dort tragen wir ein Hookscript ein welches wir gleich herunterladen:

#script: FILENAME
script: /opt/vz_hook.pl

Danach Speichern und Verlassen.

Damit vz_hook.pl auch aufgerufen werden kann laden wir es jetzt herunter und machen es ausführbar.

cd /opt
wget -qO- https://github.com/Mario-F/proxmox_duplicity/tarball/master | tar -xz --strip-components=3 --wildcards '*/examples/standalone/vz_hook.pl'
chmod +x vz_hook.pl

HINWEIS
vz_hook.pl ist ein Script welches die VZDump Backups umbenennt in einen generischen Namen welcher die VM Bezeichnung enthält, dadurch exisitiert nur noch das aktuelleste Backup auf dem Storage.
Ausserdem ruft vz_hook.pl am ende des Backupvorgangs duply auf. Für weitere Einstellungen das Script anpassen oder im Kapitel „Erweiterte Konfiguration“ schauen.

Damit ist ein grundlegendes Backup über Duplicity per Duply eingerichtet.
Zum Testen kann VZDump einmal in der Console angestoßen werden.
Parameter müssen möglicherweise angepasst werden!

vzdump --compress gzip --storage local --quiet 0 --mode snapshot -all 1

Wenn das Backup erfolgreich durchgelaufen ist kann jetzt die Backup Statistik eingesehen werden.

INFO: --------------[ Backup Statistics ]--------------
INFO: StartTime 1478030812.65 (Tue Nov 1 21:06:52 2016)
INFO: EndTime 1478030871.25 (Tue Nov 1 21:07:51 2016)
INFO: ElapsedTime 58.60 (58.60 seconds)
INFO: SourceFiles 3
INFO: SourceFileSize 495415865 (472 MB)
INFO: NewFiles 3
INFO: NewFileSize 495415865 (472 MB)
INFO: DeletedFiles 0
INFO: ChangedFiles 0
INFO: ChangedFileSize 0 (0 bytes)
INFO: ChangedDeltaSize 0 (0 bytes)
INFO: DeltaEntries 3
INFO: RawDeltaSize 495411769 (472 MB)
INFO: TotalDestinationSizeChange 493540572 (471 MB)
INFO: Errors 0
INFO: -------------------------------------------------

Es wurde ein Fullbackup durchgeführt da bisher keines existierte, die Daten sollten jetzt auch auf dem FTP sichtbar sein.

Um die incrementellen Backups hier zu zeigen habe ich in einer der beiden VM´s ein Upgrade durchgeführt das ca. 120MB an Dateien verändert hat.
Beim zweiten ausführen von VZDump sind das die Statistiken.

INFO: --------------[ Backup Statistics ]--------------
INFO: StartTime 1478032149.41 (Tue Nov 1 21:29:09 2016)
INFO: EndTime 1478032188.16 (Tue Nov 1 21:29:48 2016)
INFO: ElapsedTime 38.75 (38.75 seconds)
INFO: SourceFiles 3
INFO: SourceFileSize 559462403 (534 MB)
INFO: NewFiles 1
INFO: NewFileSize 4096 (4.00 KB)
INFO: DeletedFiles 0
INFO: ChangedFiles 2
INFO: ChangedFileSize 559458307 (534 MB)
INFO: ChangedDeltaSize 0 (0 bytes)
INFO: DeltaEntries 3
INFO: RawDeltaSize 176270298 (168 MB)
INFO: TotalDestinationSizeChange 176509867 (168 MB)
INFO: Errors 0
INFO: -------------------------------------------------

Wie man sehen kann lassen sich damit sehr gut Backups in kurzen intervallen Realisieren ohne zu viel Speicher zu belegen, es können z.b. auch einzelne wichtige VM´s häufiger gesichert werden da restliche VM´s nicht übertragen werden beim incrementellen Backup solange sich nichts ändert.