Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Tartarus für Backups Installieren und Konfigurieren

profile picture
Author
Hetzner Online
Published
2019-03-08
Time to read
5 minutes reading time

Introduction

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

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

Schritt 1 - Installation

Das Programm kann zur manuellen Installation von der Website heruntergeladen werden, und die entpackten Dateien in /usr/local/ platzieren. Danach kann der Befehl tartarus einfach ausgeführt werden.

Das Skript bedient sich einer Vielzahl klassischer Unix-Werkzeuge, die über die Paketverwaltung installiert werden:

apt-get install tar bzip2 lvm2 gnupg curl

Wenn eine aktuelle Ubuntudistribution genutzt wird, kommt es bei curl und sftp zu einem Fehler. Hierzu ist curl selbst zu compilen.

Schritt 2 - 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:

Schritt 2.1 - 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.

Schritt 2.2 - 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

Schritt 2.3 - 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.

Schritt 2.4 - 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

Schritt 2.5 - 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.

Schritt 4 - 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

Schritt 5 - 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.

Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue
Try Hetzner Cloud

Get 20€ free credit!

Valid until: 31 December 2024 Valid for: 3 months and only for new customers
Get started
Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more