OpenNMS Backup-Skript

Posted: 6th Juli 2012 by peter in OpenNMS

Ich habe eine Skript geschrieben welches die Datenbank, Graphen und alle Relevanten Dateien sichert.
Dabei zu beachten ist, dass es mit Root- Berechtigungen ausgeführt werden muss.

Es werden auch Mails an einen User versendet falls es zu Fehlern kommt. Ich habe dazu einen Postfix als

Satellitensystem auf der Maschine eingerichtet.

Ich empfehle ein NFS- Verzeichnis zu mounten um dort die Sicherungen abzulegen.

Ich denke den Rest erklären die Kommentare im Skript.

#!/bin/bash

###################################################################################################
###################################################################################################
##                                                                                               ##
## Name:         backup_onms.sh                                                                  ##
## Datum:        24.04.2012                                                                      ##
## Besitzer:     Peter Michel                                                                    ##
## Beschreibung: Sichert die Datenbank und alle relevanten Config- Dateien für den ONMS-Server   ##
##                                                                                               ##
## Contact:     peter.michel@rmcan.com                                                           ##
## License:     GPL v. 3                                                                         ##
###################################################################################################
###################################################################################################

## Das Script muss mit Root-Berechtigungen ausgeführt werden

## Allgemeine Variablen ---------------------------------------------------------------------------

## Backupverzeichnis
backup_dir=                                   ##Backupverzeichnis

## Mailadresse für Meldugen
Mail_User=                                     ##Mailadresse

## Datum
DATE=$(date +%Y%m%d)

## Funktionen -------------------------------------------------------------------------------------

## Mail- Funktion ---------------------------------------------------------------------------------
_call_mail() {

servername=`hostname`

## Die Variable msg_subject muss mit Inhalt gefüllt werden beim Aufruf der Funktion
echo "$msg_subject" | mail -s "${servername}:Warnungen" $Mail_User

}

## Funktion zum Backup der Datenbank und der Config-Dateien ---------------------------------------
_backup_config() {

## Kontrolliert ob das Verzeichnis existiert
if [ ! -d $backup_dir ]; then
msg_subject="Das Backup-Verzeichnis ist nicht erreichbar"
_call_mail
exit 1
fi
##END Check

## Kontrolliert ob das Backup schon exisitiert
if [ -f $backup_dir/$DATE-backup.tar.gz ]; then
msg_subject="Das Backup exisitiert schon"
_call_mail
exit 1
fi
##END Check

##Löscht bis auf die neusten 4 Backups alles

## Anzahl der Dateien im Verzeichnis
anzahl_w=`ls $backup_dir| wc -w`

if [ $anzahl_w -gt 3 ]; then

## Anzahl der zu löschenden Dateien wenn 4 immer erhalten sein sollen
anzahl=`echo $anzahl_w"-3"|bc `

## Zeigt die ältesten Backups an und speichert sie in einer Variable
to_delete=`ls $backup_dir| sort| tail -n "$anzahl"`

##Schleife zum löschen der letzten Backups die in der Variable $to_delete stehen
for del in  $to_delete; do
rm "$backup_dir/$del";
done
fi
##END last  delete

## Datenbank dumpen

pg_dump -U opennms > /tmp/opennms.backup.sql

## Wenn der Befehl nicht erfolgreich war wird der USER gewarnt
if [ $? -ne 0 ]; then
msg_subject="Das dumpen der Datenbank hat ein Problem verursacht"
_call_mail
exit 1
fi
## END Dump

## Backups der Config- Ordner
config_dir=/etc/opennms/
graph_dir=/usr/share/opennms/share/rrd/
web_dir=/usr/share/opennms/jetty-webapps/
##Backup der Datenbank
database=/tmp/opennms.backup.sql
## Komprimiert die Config-Dateien und schickt speichert sie im Backupverzeichnis
tar -cvzf $backup_dir/$DATE-backup.tar.gz  $config_dir $graph_dir $web_dir $database

## Wenn der Befehl nicht erfolgreich war wird der USER gewarnt
if [ $? -ne 0 ]; then
msg_subject="Das Archivieren hat ein Problem verursacht"
_call_mail
exit 1
fi

}

## Ausführen der Funktionen

_backup_config

Achtung

Die Datendank wird im laufenden Betrieb gedumpt !!!

Dies kann zu Datenverlust führen.