Vor einiger Zeit musste ich mehrfach hintereinander meine Systemlandschaft neu ausetzen.
Jedes einzelne Mal habe ich mir dabei vorgenommen:
"Gleich wenn ich fertig bin, kümmere ich mich um die Backups!"
Meist habe ich jedoch stattdessen anschließend wieder neu aufgesetzt, weil meine Hardwareplattform (Odroid C1) schon wieder die Daten auf den USB-Sticks zerstört hatte.
Ich habe mir während der Recherche verschiedene Backuptools angeschaut und mit dem verglichen, was ich nutzen wollte und was KO-Kriterien für den Einsatz waren.
Meine Anforderungen
- Client-/Serverarchitektur
- zentralisiertes Backup zur einfachen Administration
- Clients für verschiedene Betriebssysteme (Windows und Linux ist zwingend, Android, IOS wäre schön)
- Server unter Linux lauffähig
 
- Web-basierte Verwaltung
Nach einigen Abwägungen kamen BURP und UrBackup in den Test. Dort gefiel mir die Optik und das Handling von BURP einfach besser.
Installation
apt-get update apt-get install burp
An den Einstellungen in /etc/burp/burp-server.conf habe ich nur die SSL-Pfade angepasst.
ssl_key = /etc/burp/ssl_cert_backup.key ssl_cert = /etc/burp/ssl_cert_backup.crt ssl_cert_ca = /etc/burp/CA/CA_ca.mydomain.crt ca_name = ca.mydomain ca_server_name = ca.mydomain
Der Speicherort ist auf eine nach /var/spool/burp eingebundene USB-Festplatte ausgelagert.
Zum einfachen Hinzufügen von Clients habe ich mir eine kleine Bash-Datei geschrieben, die neue Clients anlegt (Zertifikate generiert) und die Client-Konfiguration auf den Geräte gleich anpasst.
nano /root/burp-add-client.sh
#!/bin/bash
SERVER="backup.mydomain"
HOSTNAME=$1
PASSWORD=`< /dev/urandom tr -dc a-zA-Z-0-9 | head -c 16 ; `
CANAME="ca.mydomain"
CACERT="CA_ca.mydomain.crt"
if [ $2 = "sent" ]; then
        echo "use existing certificates";
else
        # create client certs
        burp_ca --name ${HOSTNAME} --ca ${CANAME} --key --request --sign --batch
fi
scp /etc/burp/CA/${HOSTNAME}.key root@${HOSTNAME}:/etc/burp/ssl_cert_${HOSTNAME}.key
scp /etc/burp/CA/${HOSTNAME}.crt root@${HOSTNAME}:/etc/burp/ssl_cert_${HOSTNAME}.crt
scp /etc/burp/CA/${CACERT} root@${HOSTNAME}:/etc/burp/${CACERT}
# create client config on server
echo "cname = ${HOSTNAME}" > /etc/burp/clientconfdir/${HOSTNAME}
echo "password = ${PASSWORD}" >> /etc/burp/clientconfdir/${HOSTNAME}
echo "server = ${SERVER}" >> /etc/burp/clientconfdir/${HOSTNAME}
# create client config on client
ssh root@${HOSTNAME} "echo \"\
	mode = client
	ssl_peer_cn = ${SERVER}
	server = ${SERVER}
	password = ${PASSWORD}
	cname = ${HOSTNAME}
	port = 4971
	pidfile = /var/run/burp.client.pid
	# SSL certificate authority - same file on both server and client
	ssl_cert_ca = /etc/burp/${CACERT}
	# Client SSL certificate
	ssl_cert = /etc/burp/ssl_cert_${HOSTNAME}.crt
	# Client SSL key
	ssl_key = /etc/burp/ssl_cert_${HOSTNAME}.key
	#backup_script_pre=/BACKUP/preBackup.sh
	#backup_script_post=/BACKUP/postBackup.sh
	#restore_script_pre=/BACKUP/preRestore.sh
	#restore_script_post=/BACKUP/postRestore.sh
\" > /etc/burp/burp.conf"
Die Pfade, die von den Clients gesichert werden sollen, werden per "include = /PFAD/" hinzugefügt. Unerwünschte Unterordner können per "exclude = /PFAD/" ausgeschlossen werden.
Hinzufügen eines Clients
(Linux-)Client
Installation
apt-get update
apt-get install burp
Anpassung des daemons
nano /etc/default/burp RUN=yes
Start per cronjob
crontab -e */20 * * * * /usr/sbin/burp -a t
Server
sh /root/burp-add-client.sh [HOSTNAME]
Client (nochmal)
nano /etc/burp/burp.conf
    include = /opt/fhem/
    exclude = /opt/fhem/backup/
    exclude = /opt/fhem/demolog/
    exclude = /opt/fhem/log/
    exclude = /opt/fhem/restoreDir/
    include = /root/
    include = /etc/
    include = /var/spool/cron/
    include = /BACKUP/
    include = /usr/local/share/zabbix/
Quellen:
