Inhaltsverzeichnis

Backup

Überblick

Benno MailArchiv speichert seine Daten unterhalb von unterschiedlichen Pfaden.

Repository

Im Repository werden die E-Mails komprimiert gespeichert. Das Repository nimmt mit Abstand den größten Platz im Dateisystem des Archivs ein. Aus dem Repository werden keine E-Mails gelöscht, so daß ein Backup ausschließlich die Dateien sichern muss, die seit dem letzen Backup-Lauf hinzugefügt wurden.

Hier bietet sich ein einfaches inkrementelles Netzwerk-Backup mit Systemtools an.

Inkrementelles Backup

Ein einfaches inkrementelles Backup auf einem lokal gemounteten Netzwerk-Share kann mit einem einfachen Script realisiert werden.

Tar-Archive

#!/bin/sh
#
#
BACKUPDIR=/backup/benno-mailarchiv
 
ARCHIVE_DIR=/srv/benno
TS_FILE=$ARCHIVE_DIR/.last_backup
 
START_DATE=`date +%Y%m%d%H%M.%S`
 
if [ ! -f $TS_FILE ];then
    touch -t 200001010000 $TS_FILE
fi
 
/usr/bin/find $ARCHIVE_DIR -depth -newer $TS_FILE -print |\
    tar -T - -cf ${BACKUPDIR}/benno-backup_$(date +%Y-%m-%d_%H-%M-%S).tar 
touch -t $START_DATE $TS_FILE

Verzeichnisstruktur

#!/bin/sh
#
#
BACKUPDIR=/mnt/backup/$hostname
 
ARCHIVE_DIR=/srv/benno
TS_FILE=$ARCHIVE_DIR/.last_backup
 
START_DATE=`date +%Y%m%d%H%M.%S`
 
if [ ! -f $TS_FILE ];then
    touch -t 200001010000 $TS_FILE
fi
 
/usr/bin/find $ARCHIVE_DIR -depth -newer $TS_FILE -print |\
    /bin/cpio --pass-through --preserve-modification-time --make-directories \
    $BACKUPDIR
touch -t $START_DATE $TS_FILE

Inkrementelles Netzwerk-Backup

Die Backup-Maschine startet auf der zu sichernden Maschine per ssh ein Script, das aus allen neueren Dateien ein cpio Archiv erzeugt (benno2-create_cpio). Dieses wird per Pipe durch ssh auf den Backuphost übertragen und hier mit einem weiteren Script weiter verarbeitet.

/etc/cron.d/benno-remotebackup

# Backup Benno Mailarchive from remote host
#

# Benno Backup
20 1   * * *       root    ssh benno.lw-systems.net '/usr/local/sbin/benno2-create_cpio' | sh /usr/local/sbin/benno2-extract_cpio

benno2-extract_cpio

Dieses Script wird auf der Backup-Maschine in das Verzeichnis „/usr/local/sbin“ kopiert.

#!/bin/sh
#
#

cd /rsnapshot/benno-backups
/bin/cpio -i \
    --make-directories \
    --no-absolute-filenames \
    --preserve-modification-time

benno2-create_cpio

Auf der zu sichernden Maschine wird das Script zum Erzeugen des CPIO-Datenstroms in „/usr/local/sbin“ erstellt.

#!/bin/sh
#
#
ARCHIVE_DIR=/srv/benno
TS_FILE=$ARCHIVE_DIR/.last_backup

START_DATE=`date +%Y%m%d%H%M.%S`

/usr/bin/find $ARCHIVE_DIR -newer $TS_FILE | \
    /bin/cpio -o

touch -t $START_DATE $TS_FILE

Achtung: Zur Initialisierung muss noch die Datei .last_backup angelegt werden.

touch -t 200001010000 /srv/benno/.last_backup

Index

Die Index-Daten der indexierten E-Mails werden im Index-Verzeichnis gespeichert.

Die Index-Dateien werden nur beim Commiten geschrieben. Spätestens 10 Sekunden nachdem die letzte E-Mail in den Index geschrieben wurde, wird dieser committet.

Ein Backup kann daher auf Basis eines Hardlink-Snapshots erfolgen.

/etc/init.d/benno-archive stop
sleep 10
cp -al /srv/benno/index /srv/benno/index_backup
/etc/init.d/benno-archive start

Das Verzeichnis /srv/benno/index_backup kann jetzt gefahrlos gesichert werden.

Benutzerdatenbank und Templates

Hier kann einfach eine Dateisicherung erfolgen.