Konzept für Server-Backup

wm0f

New Member
Guten Abend!

Ich habe einen vServer im produktiven Betrieb mit einigen Webpräsenzen und einem Mailserver drauf.
Nun möchte ich gerne einen weiteren vServer so einrichten, dass er genau zwei Aufgaben hat: Er soll als Monitoring-Instanz dienen (was erstmal kein Problem ist) und (so hatte ich es mir gedacht) monatlich ein komplettes Backup einiger Verzeichnisse und täglich ein inkrementelles Backup des produktiven Servers anlegen.
Außerdem wäre es schön, wenn sich der Backup-Server um alles kümmern würde und auf dem produktiven Server keine Zugangsdaten zum Backup-Server herum liegen würden (falls der Server doch mal gehackt wird, ist das Backup nicht betroffen).

Also nochmal in Kurzfassung, was ich will:
1. Backup-Server holt monatlich ein komplettes Backup von einigen Verzeichnissen inkl. Datenbank-Dumps
2. Backup-Server holt täglich Datenbank-Dumps und geänderte Dateien
3. Backup-Server speichert das alles möglichst so, dass es unkompliziert möglich ist, ein Backup eines bestimmten Tages wieder einzuspielen.

Gibt es für sowas komplette Lösungen? Wie und mit welcher Software würdet ihr das lösen?

Danke und viele Grüße!
 
Wenn du den Stand von einem einzelnen Tag zurückspielen willst, bietet sich ein rsync Backup mit Hardlinks an.
So hab ich es für meine privaten Kisten im Einsatz. Mein Script machts allerdings in die andere Richtung, also vom produktiven System zum Backupserver hin.

Code:
#!/bin/bash

PID=$$
SCRIPTNAME=$(basename $0)

#####################################################################################################################

SSH_HOST="10.0.0.1"
SSH_PORT=22
SSH_PATH=/backup_rsync

BACKUP_PREFIX=My_Hostname
BACKUP_SOURCE=/
BACKUP_COUNTS=7
BACKUP_PARAMETER="-az --stats --delete-before --delete-excluded --partial --devices --specials --numeric-ids --hard-links --bwlimit=1024"
BACKUP_EXCLUDE="--exclude /proc/ \
				--exclude /sys/ \
				--exclude /dev/"
				
#####################################################################################################################

logger -p info -t ${SCRIPTNAME}[${PID}] Getting Last Backup ...

DATE=$(date +%Y%m%d_%H%M%S)
LAST_BACKUP=$(ssh -p ${SSH_PORT} ${SSH_HOST} "/bin/ls -1 ${SSH_PATH} 2>/dev/null | tail -n1")

if [ "${LAST_BACKUP}" != "" ]; then
	LAST_BACKUP="--link-dest=${SSH_PATH}/${LAST_BACKUP}"	
fi

#####################################################################################################################

logger -p info -t ${SCRIPTNAME}[${PID}] Starting Backup ...

rsync ${BACKUP_PARAMETER} ${BACKUP_EXCLUDE} -e "ssh -p ${SSH_PORT}" $LAST_BACKUP ${BACKUP_SOURCE} ${SSH_HOST}:${SSH_PATH}/${BACKUP_PREFIX}_${DATE} 2>&1 | grep -v "file has vanished: " | while read LINE; do 
	if [ "x$LINE" != "x" ]; then 
		logger -p info -t ${SCRIPTNAME}[${PID}] ${LINE}
	fi
done

#####################################################################################################################

logger -p info -t ${SCRIPTNAME}[${PID}] Removing old Backups ...

COUNTER=0
for DIR in $(ssh -p ${SSH_PORT} ${SSH_HOST} "/bin/ls -1 -r ${SSH_PATH}/ | grep ${BACKUP_PREFIX}")
do
	let counter=$counter+1
	if [ $counter -gt "${BACKUP_COUNTS}" ]; then
		ssh -p ${SSH_PORT} ${SSH_HOST} "rm -rf ${SSH_PATH}/${DIR}"
	fi
done

#####################################################################################################################

exit 0

Das ist aber nun kein großer Akt das entsprechend umzubauen. ;)
 
Danke für deinen Tipp, Firewire2002! Ich muss zu meiner Schande gestehen, dass ich rsync bisher gar nicht kannte, das scheint ja durchaus geeignet zu sein.
Ich habe bei Ubuntuusers ein Script gefunden, dass eigentlich genau das kann, was ich brauche: Ein monatlich rotierendes Backup anlegen und dabei die tollen Funktionen von rsync nutzen, damit man nicht nach ner Woche die Platte mit doppelten Daten voll hat. Und vor allem kann man es auf dem Backupserver ausführen und per SSH die Daten vom Produktivsystem holen.

Vielen Dank, ich melde mich dann, wenn es nicht funktioniert :D

Edit: Um den Thread noch nutzbar für die Nachwelt zu machen, hier meine Lösung: Ich habe RSYNC auf dem Backupserver installiert und dieses Script von Ubuntuusers genommen. Wenns dazu Fragen gibt, kann ich vielleicht helfen ;)
 
Last edited by a moderator:
Back
Top