Backups auf FTP Server mit Tartarus

Auf einem neuen Server steht ein Backupserver bereit der nur über ftp erreichbar ist. Das normale Werkzeug der Wahl rsnapshot kann damit so nicht umgehen. Hetzner erwähnt ein Werkzeug namens tartarus das auch sonst an vielen Stellen positives Echo bekommt.

Dieses Dokumentation orientiert sich hauptsächlich an dieser Beschreibung.

Zuerst die Vorraussetzungen installieren

apt-get install curl bzip2

Dann die Quelle für tartarus bekannt machen und das Werkzeug selbst installieren.

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

Dann ein Konfigurationsverzeichnis erstellen und einen selbst gewählten Verschlüsselungskey in eine Datei schreiben (das brauche wir später) In dem Verzeichnis legen wir auch zwei Konfigurationsdateien an. Eine generische mit allgemeinen Parametern und eine Konfigurationsdatei für das eigentliche Backup

mkdir /etc/tartarus
echo eingeheimerschlüssel > /etc/tartarus/backup.sec
vi /etc/tartarus/generic.inc

    STORAGE_METHOD="FTP"
    STORAGE_FTP_SERVER="dein.backup.server"
    STORAGE_FTP_USER="user"
    STORAGE_FTP_PASSWORD="password"
    COMPRESSION_METHOD="bzip2"
    ENCRYPT_SYMMETRICALLY="yes"
    ENCRYPT_PASSPHRASE_FILE="/etc/tartarus/backup.sec"
    STAY_IN_FILESYSTEM="no"
    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"
    }
    TARTARUS_DEBUG_HOOK() {  echo $DEBUGMSG | logger }

vi /etc/tartarus/root.conf
source /etc/tartarus/generic.inc
NAME="root"
DIRECTORY="/"
EXCLUDE="/tmp/ /proc/ /sys/ /var/tmp/ /var/run/ /var/www"
CREATE_LVM_SNAPSHOT="no"
INCREMENTAL_TIMESTAMP_FILE="/var/spool/tartarus/timestamps/root"
# /var/www wird separat gesichert


Für inkrementelle Backups brauche wir später noch dieses Verzeichnis.

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

Und jetzt das erste Backup

tartarus /etc/tartarus/root.conf
Executing TARTARUS_DEBUG_HOOK
Checking for updates...
Executing TARTARUS_DEBUG_HOOK
done
Executing TARTARUS_DEBUG_HOOK
syncing...
Executing TARTARUS_DEBUG_HOOK
Beginning backup run...
gpg: directory `/root/.gnupg' created
Executing TARTARUS_DEBUG_HOOK
Uploading backup to ftp://u58071.your-backup.de///tartarus-root-20121211-1230.tar.bz2.gpg...
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/pubring.gpg' created

Und so kann man es dann wieder auspacken (hier in ein tmp Verzeichnis)

curl ftp://user:password@dein.ftp.server./tartarus-root-20121211-1230.tar.bz2.gpg | gpg --decrypt | tar xpvj -C /tmp/restore

(hier braucht man auch den key den man oben in die backup.sec Datei geschrieben hat)

Jetzt fehlt noch die Automatisierung  mittels cron und verschiedene Konfiguration für wöchentliche Systemsicherungen und tägliche Datensicherungen