automatisches Zarafa-Backup

Wie sichert man einfach und täglich seinen Zarafa Email Server?

Auf einem 2ten PC (24/7 Sever) läuft der Dienst BackupPc und sichert das Dateisystem. Dank Rsync-Transfer-Verfahren geht dies selbst über eine normale DSL 16.000er Verbindung, solange täglich neu entstehende Datenmenge nicht allzusehr ausufert.

Damit ist dann das Dateisystem gesichert. Im Dateisystem liegen die Anänge der Emails sowie natürlich die Konfiguration von Zarafa, Postfix, etc. Auf die Details der BackupPC konfiguration gehe ich evtl mal an anderer Stelle ein. Um aber auch die MySQL-Datenbank der Emails mit zu sichern, bedarf es vor der DaSi eines SQLDumps. Dies erledingt folgendes Script.

/home/username/scripts/zarafadump.sh:

#!/bin/bash
mysqluser=“<euer Benutzername>“
mysqlpw=“<euer Passwort>“
starttime=$(date +%F-%H:%M:%S)
backupdir=/home/username/backup
logfile=log.txt
echo „“ >> „$backupdir/$logfile“
echo „#######################################“ >> „$backupdir/$logfile“
echo „Backup der Zarafa Datenbak startet am $starttime“ >> „$backupdir/$logfile“
#Letztes gutes Dump Sichern
mv „$backupdir“/fulldump.sql.gz „$backupdir“/fulldump.old-$starttime.sql.gz
#mysqldump an gzip pipen und abspeichern
# /usr/bin/mysqldump –single-transaction zarafa |gzip -f > /backup/fulldump.sql.gz
# if /usr/bin/mysqldump –single-transaction -p“$mysqlpw“ -u $mysqluser zarafa > „$backupdir“/fulldump.sql.gz
/usr/bin/mysqldump –single-transaction -p“$mysqlpw“ -u $mysqluser zarafa | gzip -f –rsyncable > „$backupdir“/fulldump.sql.gz
#echo $?
if [ $? = 0 ]
#wenn kein error, dann
then
#gesichertess letztes dump auf ablagestapel
mv „$backupdir“/fulldump.old-$starttime.sql.gz „$backupdir“/fulldump.old.sql.gz
#beenden mit code 0
stoptime=$(date +%F-%H:%M:%S)
echo „Backup ohne Fehler beendet am $stoptime“ >> „$backupdir/$logfile“
#falls errors
else
stoptime=$(date +%F-%H:%M:%S)
echo „Backup mit Fehlern abgebrochen am $stoptime“ >> „$backupdir/$logfile“
#teilweise existierendes dump speichern
mv „$backupdir“/fulldump.sql.gz „$backupdir“/unfinished-$starttime.sql.gz.
echo „Unfertiges Backup gesichert unter „$backupdir/unfinished-$starttime.sql.gz.““ >> „$backupdir/$logfile“
#beenden mit code 1
exit 1
fi
exit 0

 

Dieses Script wird aufgerufen von BackupPc auf Server Perquod mittels DumpPreUserCommand Override:

$sshPath -p <SSH-Port> -q -x -l <username> $host /home/username/scripts/zarafadump.sh

Das Pipen an Gzip reduziert die Datenmenge auf ca. ein Viertel und mit dem Zusatz –rsyncable bleibt es auch gut zu transferieren.