Benno MailArchiv speichert seine Daten unterhalb von unterschiedlichen Pfaden.
/srv/benno/archive/repo
/srv/benno/archive/index
/srv/benno/inbox
/var/lib/benno-web
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.
Ein einfaches inkrementelles Backup auf einem lokal gemounteten Netzwerk-Share kann mit einem einfachen Script realisiert werden.
#!/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
#!/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
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.
# 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
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
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
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.
Hier kann einfach eine Dateisicherung erfolgen.