PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Backup mit rsync + log + sendmail



saphear
16.08.10, 10:36
Moin zusammen,

ich suche noch Tipps und Hinweise für eine Backup-Variante mit 2 bzw. 3 Servern.
Es gibt momentan einen Zarafa-Mailserver (Ubuntu 10.04), der die Daten in einer Mysql DB speichert. Dieser Mailserver ist sowohl im Internet als auch im Intranet. Außerdem gibt es einen reinen Samba-Fileserver (Gentoo), der nur im Intranet erreichbar ist. Zu guter letzt noch eine NAS, die als zusätzliches Backup dient.

Gesichert wird aktuell wie folgt:
1. Mailserver sichert per mysqldump intern
2. Mailserver sichert das Backup per rsync auf den Fileserver
3. Fileserver sichert per rsync intern (sprich die Daten und auch die DB)
4. Fileserver sichert per rsync auf die NAS

In naher Zukunft soll die NAS dann auch noch per eSATA auf weitere Festplatten sichern, damit auch die Datenträger gewechselt werden und so eine weitere Sicherheit errreicht wird. In der aktuellen Version gibt es 3 volle Datenbestände inklusive 2 Sicherungen.

Das große Problem ist nun die Protokollierung. Bisher sehe ich nur etwas, wenn ich auf den Server schaue. Jetzt habe ich mir auf Basis eines Scripts aus der Ubuntu-Community mal folgendes zusammengebastelt (bisher ungetestet!);


## Backup Script /usr/local/bin/rync-backup.sh
## Version 1.0 Updated 16 Aug 2010 by sappel
## Script by Peter Noble, see https://help.ubuntu.com/community/Rsyncmirror
## Sicherung des Gentoo-Servers auf die NAS

## Point our log file to somewhere and setup our admin email
log=/var/log/rsync.log

adminmail=khf@ubuntusrv
# Set to 0 if you do not want to receive email
sendemail=1

# Subject is the subject of our email
subject="Backup fertiggestellt"

## Setup the backup directory
remote=/nas-sicherung

## Setup the local directory / Our mirror
local=/daten

## Initialize some other variables
complete="false"
failures=0
status=1
pid=$$

echo "`date +%x-%R` - $pid - Backup Sync gestartet" >> $log
while [[ "$complete" != "true" ]]; do
if [[ $failures -gt 0 ]]; then
## Sleep for 3 minutes for sanity's sake
## The most common reason for a failure at this point
## is that the rsync server is handling too many concurrent connections.
sleep 3m
fi

if [[ $1 == "debug" ]]; then
echo "Starte Versuch Nummer $failures"
rsync -a --delete-after --progress $remote $local
status=$?
else
rsync -a --delete-after $remote $local >> $log
status=$?
fi

if [[ $status -ne "0" ]]; then
complete="false"
(( failures += 1 ))
else
echo "`date +%x-%R` - $pid - Backup Sync fertiggestellt" >> $log

# Send the email
if [[ -x /usr/bin/mail && "$sendemail" -eq "1" ]]; then
mail -s "$subject" "$adminmail" <<OUTMAIL
Zusammenfassung der Sicherung Gentoo-Server auf die NAS-Sicherungsfestplatte
PID: $pid
Fehlversuche: $failures
Beendet: `date`

$HOSTNAME

OUTMAIL
fi
complete="true"
fi
done

exit 0


Ist das Script so sinnvoll? Gibt es bessere Lösungen, speziell für den Log-Teil?
Wie ich dem Gentoo-Server beibringe, per sendmail auf den Ubuntu-Mailserver zurückzusenden, weiß ich noch nicht. Aber auf dem Ubuntu-Server liegen eben die lokalen Postfächer, sprich dort fließt die Message dann in das Outlook Postfach des Chefs. Hat dazu jemand vorab eine Idee? Das Script ist wie gesagt bisher nicht getestet, aber ich schaue mir mal an, ob ich dem Gentoo-Server mittels hosts nicht beibringen kann, wo er khf@ubuntusrv findet.

Grüße
sappel