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: