Hetzner - DokuWiki

Tartarus Backup-Konfiguration

Inhaltsverzeichnis

Tartarus Backup

Tartarus ist ein Backup-System, dass auf klassischen und weitverbreiteten Unix-Tools basiert und besonders auf die Bedürfnisse eines Rootservers zugeschnitten ist.

Installation

Debian-Anwender können das Programm auch bequem über das Paketsystem installieren und aktuell halten, indem sie folgende Zeile zu ihrer APT-Konfiguration hinzufügen (z.B. in die Datei /etc/apt/sources.list.d/tartarus.list):

deb http://wertarbyte.de/apt/ ./

Nach einem "apt-get update" kann das Skript einfach mit "apt-get install tartarus" installiert werden.

Um zusätzlich den GnuPG-Schlüssel zu importieren, mit dem das Repository signiert ist, und das Programm zu installieren genügen daher folgende Befehle:

wget -O /etc/apt/sources.list.d/wertarbyte.list http://wertarbyte.de/apt/wertarbyte-apt.list
wget -O - http://wertarbyte.de/apt/software-key.gpg | apt-key add -
apt-get update
apt-get install tartarus

Das Skript bedient sich einer Vielzahl klassischer Unix-Werkzeuge, die über die Paketverwaltung - sofern nicht bereits automatisch geschehen - installiert werden:

apt-get install tar bzip2 lvm2 gnupg curl

Wer über kein Debian (oder zum Beispiel Ubuntu) verfügt, kann das Programm zur manuellen Installation einfach von der Website herunterladen und nach die entpackten Dateien in /usr/local/ plazieren.

Empfohlen wird hingegen die Installation über das Paketsystem, da neue Versionen so automatisch und einfach installiert werden können.

Wenn eine aktuelle Ubuntudistribution genutzt wird (ab 10), kommt es bei curl und sftp zu einem Fehler. Hierzu ist curl selbst zu compilen. Eine Anleitung dazu gibt es hier: Curl fuer sftp

Backup-Konfiguration

Tartarus liest seine Konfiguration aus Profildateien, die im Verzeichnis /etc/tartarus/ abgelegt werden. Es handelt sich um Shell-Skripte, die vom Backup-Prozess ausgewertet werden; daher ist es auch möglich, über das Kommando "source" weitere Konfigurationsdateien in einem Profil einzuschließen. Dies lässt sich nutzen, um generische Einstellungen für alle Backup-Profile zentral abzuspeichern:

Allgemeine Einstellungen

# /etc/tartarus/generic.inc
# Generische Einstellungen für die Sicherung
# auf den Hetzner-FTP-Server
STORAGE_FTP_SSL_INSECURE="yes"
STORAGE_METHOD="FTP"
# Adresse des FTP-Server
STORAGE_FTP_SERVER="1.2.3.4"
# FTP-Zugangsdaten
STORAGE_FTP_USER="12345"
STORAGE_FTP_PASSWORD="SecretPassword"
# Übertragung verschlüsseln und SFTP verwenden
STORAGE_FTP_USE_SFTP="yes"
# Kompression
COMPRESSION_METHOD="bzip2"
# Größe des LVM-Snapshots
LVM_SNAPSHOT_SIZE="1000M"
# Backup-Daten symmetrisch verschlüsseln
ENCRYPT_SYMMETRICALLY="yes"
# Passwort aus /etc/tartarus/backup.sec lesen
ENCRYPT_PASSPHRASE_FILE="/etc/tartarus/backup.sec"
# Während der Erstellung der Sicherung nicht über
# Dateisystemgrenzen hinausgehen
STAY_IN_FILESYSTEM="yes"

Diese Einstellungen verschlüsseln Sicherungen mit einem Passwort, das aus der Datei /etc/tartarus/backup.sec gelesen wird. Der Inhalt dieser Datei ist erforderlich, um die Archive später wieder entpacken zu können; er sollte daher sicher (evtl. in ausgedruckter Form) verwahrt werden.

Einfache Sicherung

Ein einfaches Profil zur Sicherung des Root-Dateisystems (/) könnte folgendermaßen aussehen:

# /etc/tartarus/root.conf
#
# Allgemeine Einstellungen einlesen
source /etc/tartarus/generic.inc
# Name des Sicherungsprofils
NAME="root"
# Verzeichnis / sichern
DIRECTORY="/"
# Keine temporären Dateien sichern
# mehrere Ordner durch Leerzeichen trennen
EXCLUDE="/tmp/"
# keinen LVM-Snapshot erstellen
CREATE_LVM_SNAPSHOT="no"

Die Sicherung lässt sich einfach durch folgenden Aufruf starten:

/usr/sbin/tartarus /etc/tartarus/root.conf

Sicherung mit LVM-Snapshot

LVM-Snapshots erlauben es, das dem Dateisystem zu Grunde liegende LVM-Blockgerät im laufenden Betrieb einzufrieren. Dazu speichert das LVM-System die während des Betriebs anfallenden Änderungen in einem separaten Logical Volume.

# /etc/tartarus/home.conf
source /etc/tartarus/generic.inc
NAME="home"
DIRECTORY="/home"
# LVM-Snapshot erstellen
CREATE_LVM_SNAPSHOT="yes"
# LVM-Volume, auf dem das Dateisystem gespeichert ist
LVM_VOLUME_NAME="/dev/volumegroup/home"
# Mountpoint, in dem das Dateisystem eingehängt wird
LVM_MOUNT_DIR="/home"

Um das Snapshot-Dateisystem einbinden zu können, benutzt Tartarus das Verzeichnis /snap: Die eingefrorenen Dateisysteme werden in den dazugehörigen Unterverzeichnissen eingeklinkt.

Inkrementelle Sicherungen

Inkrementelle Sicherungen archivieren nicht das gesamte Dateisystem, sondern nur die Änderungen seit der letzten vollständigen Sicherung. Tartarus legt Markierungs-Dateien an, um den genauen Zeitpunkt der letzten Sicherung festzuhalten. Um inkrementelle Sicherungen durchzuführen, muss zunächst ein Verzeichnis angelegt werden, das diese Dateien enthält:

mkdir -p /var/spool/tartarus/timestamps/

Die Konfigurationsprofile erhalten nun folgende Zeile (mit entsprechend angepasstem Dateiname):

INCREMENTAL_TIMESTAMP_FILE="/var/spool/tartarus/timestamps/home"

Nach jeder erfolgreichen Sicherung aktualisiert das Skript diese Datei. Um eine inkrementelle Sicherung durchzuführen, startet man Tartarus mit dem zusätzlichen Parameter "-i":

/usr/sbin/tartarus -i /etc/tartarus/home.conf

Automatischer Aufruf

Ein typisches System wird über mehrere Backup-Profile im Verzeichnis /etc/tartarus/ verfügen; um sie automatisch aufzurufen, bietet sich folgendes Hilfskript an:

#!/bin/sh
# /usr/local/sbin/backup.sh
# Run all backup profile found in /etc/tartarus/ and pass
# command line arguments on to tartarus (e.g. -i)
for profile in /etc/tartarus/*.conf; do
  /usr/sbin/tartarus $* "$profile"
done

Es lässt sich nun mit und ohne Parameter aufrufen, um alle Profile als vollständige oder inkrementelle Sicherung abzuarbeiten:

/usr/local/sbin/backup.sh # Vollsicherung
/usr/local/sbin/backup.sh -i # Inkrementelle Sicherung

Der Befehl "crontab -e" editiert die Crontab des Root-Benutzers:

PATH=/bin/:/sbin/:/usr/bin/:/usr/sbin/:/usr/local/sbin/:/usr/local/bin
# m    h       dom     mon     dow     command
0      1       *       *       mon-sat /usr/local/sbin/backup.sh -i
0      1       *       *       sun     /usr/local/sbin/backup.sh

Jeden Sonntag wird so um 1:00h nachts eine vollständige Sicherung gestartet; an den übrigen Tagen wird eine darauf basierende inkrementelle Sicherung erstellt.

Wiederherstellung

Da Tartarus auf einfachen Unix-Werkzeugen basiert, lässt sich eine Sicherung sehr einfach aus dem Rettungssystem wiederherstellen. Um die Dateien in einer Sicherung anzuzeigen, genügt folgende Befehlszeile:

curl ftp://USER:PASS@YOURSERVER/home-20080411-1349.tar.bz2.gpg |
gpg --decrypt | tar tpvj

Um das Archiv in das Verzeichnis /mnt/restore zu entpacken, wird die Zeile folgendermaßen modifiziert:

curl ftp://USER:PASS@YOURSERVER/home-20080411-1349.tar.bz2.gpg |
gpg --decrypt | tar xpvj -C /mnt/restore

Alte Sicherungen löschen

Werden regelmäßig Sicherungen erstellt, gerät die Quota des FTP-Servers schnell an die Grenze - alte Sicherungen sollten daher regelmäßig entfernt werden. Dies erledigt das Skript "charon.ftp" automatisch: folgender Befehl überprüft alle Sicherungen namens "home" auf dem FTP-Server auf ihr "Haltbarkeitsdatum". Durch den Parameter "--dry-run" werden die Dateien nicht wirklich entfernt.

/usr/sbin/charon.ftp --host 1.2.3.4 \
 --user USERNAME \
 --password PASSWORD \
 --profile home \
 --maxage 7 \
 --dry-run

Charon würde alle Dateien, deren Erstellung länger als 7 Tage zurückliegt, entfernen. Dies passiert jedoch nur, wenn keine inkrementellen Sicherungen darauf basieren.

Um nach einem erfolgreichen Backup den FTP-Server automatisch aufzuräumen, kann man einen Tartarus-Hook benutzen. Folgender Eintrag in den Tartarus-Einstellungen (z.B. generic.inc) überprüft nach jedem Backup-Lauf den Server auf abgelaufene Archive:

# FTP-Server nach der Sicherung aufräumen
TARTARUS_POST_PROCESS_HOOK() {
    echo -n "$STORAGE_FTP_PASSWORD" | /usr/sbin/charon.ftp \
    --host "$STORAGE_FTP_SERVER" \
    --user "$STORAGE_FTP_USER" --readpassword \
    --maxage 7 \
    --dir "$STORAGE_FTP_DIR" --profile "$NAME"
}

Das Skript übernimmt so die Einstellungen direkt aus der Tartarus-Konfiguration. Damit das Passwort nicht in der Prozessliste erscheint, wird es über die Standardeingabe eingelesen.

Dokumentation und Kontakt

Weitere Informationen über Tartarus finden sich auf der Projektseite, der Programm-Dokumentation und der Mailingliste.

Wer Fehler im Skript melden oder über dessen weitere Entwicklung informiert werden oder gar daran mitwirken möchte sollte sich dort unverbindlich anmelden.



© 2014. Hetzner Online AG. Alle Rechte vorbehalten.