rsnapshot auf einem QNAP NAS

Wer ein QNAP NAS (Network Attached Storage) im Einsatz hat kommt nicht drumherum für wichtige Dinge ein Backup anzulegen.

rsnapshot bietet uns hierfür die beste Möglichkeit inkrementelle Backups je nach Bedarf anzulegen. Es hat sich schon in vielen Bereichen bewährt und es gibt jede Menge Infos und Anleitungen im Internet, wie zum Beispiel unter http://wiki.ubuntuusers.de/rsnapshot

Für ältere QNAP Systeme gibt es die Software rsnap, für die neueren Systeme funktioniert diese Lösung nach einer internen Umstellung nicht mehr. Zum Beispiel wurden die Pfade zu externen Festplatten geändert, sodass die Abfrage nach angeschlossenen Festplatten von rsnap nicht mehr funktioniert.

Ich habe ein kleines Skript geschrieben, welches rsnapshot ausführt und Meldungen an das QNAP System weitergibt. Es ist kein Ersatz für eine komplette grafische Oberfläche, aber ein komplett funktionierendes Startskript für rsnapshot.

#!/bin/bash
# QNAP rsnapshot
# Description: Script for rsnapshot (QNAP)
# Author: Dennis Zyska (info@dynamitesolutions.de)

RSNAPSHOT_PATH=rsnapshot
CONFIG_FILE=/share/homes/admin/rsnap.conf
OPTS=$2
LOG_FILE=/var/log/rsnapshot.log

QNAP_LOG_TOOL=/sbin/log_tool
QNAP_STATUS_LED=/sbin/set_status_led

NAME=rsnapshot
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

DATE_START=$(date +"%d.%m.%Y")
TIME_START=$(date +"%T")
LOG_TIME=$(date +"%T")
TIME_STAMP_START=$(date +%s)

case "$1" in
start)
	printf "%-50s" "Starting $NAME..."
	if [ -f $PIDFILE ]; then
		PID=`cat $PIDFILE`
		if ! [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
			#Service is running
			$CMD_LOG_TOOL -a "Das Backup konnte nicht gestartet werden, da schon ein Backup Prozess in Arbeit ist!" -t 2 -u "Backup"
			printf "%s\n" "is already running, not started"
			exit 2
		else	
			rm -f $PIDFILE
		fi
	fi

	$QNAP_LOG_TOOL -a "Backup Start mit Konfigurationsdatei $CONFIG_FILE" -t 0 -u "Backup"
	$QNAP_STATUS_LED 1 1
	$RSNAPSHOT_PATH -c $CONFIG_FILE $OPTS>$LOG_FILE 2>&1 &
	PID=$!
	if [ -z $PID ]; then
        printf "%s\n" "Fail"
    else
		echo $PID > $PIDFILE
		printf "%s\n" "Ok - Backup is started"
	fi
	
	printf "%-50s" "Waiting for exit..."
	wait $PID
	
	EXIT_STATUS=$?

	case $EXIT_STATUS in
        0) $QNAP_LOG_TOOL -a "Das letzte Backup war erfolgreich!" -t 0 -u "Backup"
		   printf "%s\n" "Success";;
        2) $QNAP_LOG_TOOL -a "Das letzte Backup war erfolgreich, aber mit Warnungen. Siehe Log-File unter $LOG_FILE" -t 1 -u "Backup"
		   printf "%s\n" "Warning";;
        1) $QNAP_LOG_TOOL -a "Beim letzten Backup ist ein Fehler aufgetreten! Siehe Log-File unter $LOG_FILE" -t 2 -u "Backup"
		   printf "%s\n" "Error";;
	esac
	
	rm -f $PIDFILE
	$QNAP_STATUS_LED 1 0
	exit $EXIT_STATUS
;;	
status)
        printf "%-50s" "Checking $NAME..."
        if [ -f $PIDFILE ]; then
            PID=`cat $PIDFILE`
            if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
                printf "%s\n" "Process dead but pidfile exists"
            else
                echo "Running"
            fi
        else
            printf "%s\n" "not Running"
        fi
;;
stop)
        printf "%-50s" "Stopping $NAME"
            PID=`cat $PIDFILE`
            cd $DAEMON_PATH
        if [ -f $PIDFILE ]; then
            kill -6 $PID
            printf "%s\n" "Ok"
            rm -f $PIDFILE
        else
            printf "%s\n" "pidfile not found"
        fi
;;
restart)
        $0 stop
        $0 start
;;
*)
        echo "Usage: $0 {status|start|stop|restart}"
        exit 1
esac

Die Pfade sollten entsprechend angepasst werden. Die Konfiguration muss selbstständig angepasst werden, eventuell hilft euch diese Beispiel Konfiguration:

config_version	1.2
snapshot_root	/share/USBDisk1/Snaptshots
#no_create_root	1
cmd_rm			/opt/bin/rm
cmd_rsync		/opt/bin/rsync
verbose			2
rsync_short_args	-aP
rsync_long_args	--delete --numeric-ids --relative --delete-excluded
#interval		hourly	6
interval		daily	7
interval		weekly	25
interval		monthly	6
backup	/share/MD0_DATA/TestOrdner/	NAS/

Zuletzt muss noch der Cronjob (/etc/config/crontab) zur Ausführung angepasst werden.

00 23 * * * /share/homes/admin/rsnapshot.sh start daily
00 3 * * 1 /share/homes/admin/rsnapshot.sh start weekly
00 7 1 * * /share/homes/admin/rsnapshot.sh start monthly

Mit crontab /etc/config/crontab laden wir die Crontab Konfiguration erneut und mit einem anschließenden Neustart (/etc/init.d/crond.sh restart) wird die Konfiguration übernommen.

Tipp: Sollte das Paket rsnapshot nicht installiert sein, kann man im Forum von QNAP Qnapware herunterladen und per Konsole mit dem Befehl opkg install rsnapshot das entsprechende Paket nachinstallieren.

Dennis

Hallo zusammen, mein Name ist Dennis. Ich bin Geschäftsführer eines IT-Dienstleistungsunternehmen für den Mittelstand. In meiner Freizeit treibe ich gerne Sport und beschäftige mich mit allerlei Technik. Bei Fragen jeglicher Art könnt ihr einfach auf mich zukommen :)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.