Die Pflicht der Datensicherung - Noch eine BackupPC AnleitungBis vor kurzem sah meine Backupsituation noch so aus: Wichtige Daten werden im privaten Netz gespiegelt, projektbezogene Dateien manuell auf DVD ausgelagert. Alles lief über Unison. Ein historisch gewachsenes Chaos, das wir hier mit den Mitteln der Open-Source Software BackupPC bekämpfen wollen. Bei der Konzeption und Planung des Backups und der Auswahl von geeigneter Software, wurde mir schnell bewusst, dass es mehr sein musste, als eine Skriptlösung. Mein Bestreben eine übersichtliche Methode zu haben, ein Netzwerk von PCs mit unterschiedlichen Betriebssystemen (Linux, MacOS X, Windows) zu sichern, führte mich schließlich zu BackupPC.
Die folgenden Notizen mögen dem Einsteiger an der einen oder anderen Stelle helfen. Sie ersetzen auf keinen Fall die gute Dokumentation der Software und andere hilfreiche Anleitungen, auf die ich unten verlinke. Konkrete Pfadangaben beziehen sich auf Gentoo Linux, sollten sich auf anderen Systemen jedoch auch verorten lassen. BackupPC läuft ohne, doch empfiehlt sich der Übersichtlichkeit halber das Webfrontend (Screenshots). Dafür muss ein Webserver laufen. (z.B. Apache) ApacheGeschrieben ist BackupPC in Perl. Die empfohlene Konfiguration setzt daher auf das mod_perl Modul vom Webserver Apache. Aktivierung über /etc/conf.d/apache2: APACHE2_OPTS="-D PERL" http://localhost/perl-status zeigt ob und wie mod_perl installiert ist. Apache läuft hier mit Unterstützung für Namensbasierte Virtuelle Hosts (vhosts). Der Server liefert also mehrere lokale Adressen/Domains aus. Der Backup Server soll auf localhost als Default VHost erreichbar sein. /etc/apache2/vhosts.d/backuppc.include mit folgendem Inhalt erstellen <Directory /var/www/localhost/cgi-bin> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options +ExecCGI +Indexes AllowOverride AuthConfig Order deny,allow Deny from all Allow from 192.168.2 127.0.0.1 AuthName "backuppc" AuthType Basic AuthUserFile /usr/local/etc/apache2/.htpasswd Require valid-user </Directory> /etc/apache2/vhosts.d/00_default_vhost.conf: Nach dem Eintrag default_vhost.include wird die neue Datei eingebunden: Include /etc/apache2/vhosts.d/backuppc.include Anlegen von Benutzern für das Webfrontend:htpasswd /usr/local/etc/apache2/.htpasswd backuppc htpasswd /usr/local/etc/apache2/.htpasswd userA htpasswd /usr/local/etc/apache2/.htpasswd userB Für BackupPC muss Apache als Benutzer backuppc laufen. User backuppc Group backuppc/etc/BackupPC/hosts: localhost 0 backuppc userA rechnerB 0 userA rechnerC 0 userB Da Apache als BackupPC Benutzer läuft, können Schwierigkeiten mit existierenden Webseiten aufgrund fehlender Dateirechte auftreten. Ich habe den Benutzer backuppc der Gruppe apache zugewiesen usermod -aG apache backuppc und die Gruppenrechte der betroffenen Pfade entsprechend angepasst. Andere Lösungen wären, einen zweiten Webserver aufzusetzen (lighttpd), zwei unterschiedliche Instanzen von Apache laufen zu lassen, einen der Server in einer virtuellen Maschine laufen zu lassen oder ihn physisch zu trennen. BackupPCMit visudo vollen Zugriff auf den ClientDamit der Backupprozess auf dem Client mit vollen Zugriffsrechten auch auf Systemdateien ablaufen
kann, werden die Berechtigungen des Benutzers backuppc mit dem Kommando Der folgende Befehl erstellt den Backupbenutzer backuppc, gibt ihm seine eigene Gruppe, eine Shell und erstellt ein Heimatverzeichnis für die SSH Schlüssel, die im nächsten Schritt gebaut werden. useradd -c "Mister Backup" --user-group --shell /bin/bash --create-home backuppc Der Benutzer backuppc darf ohne Eingabe eines Passwortes den backuppc ALL=(ALL) NOPASSWD: /usr/bin/rsync *,/bin/mount *,/bin/umount * Serverseitige AnpassungenDer Übersichtlichkeit halber bekommt jeder PC seine eigene Konfigurationsdatei:/etc/BackupPC/pc/hostname.pl Anpassen des Backup Kommandos für localhost: $Conf{RsyncClientCmd} = '/usr/bin/sudo $rsyncPath $argList+'; $Conf{RsyncClientRestoreCmd} = '/usr/bin/sudo $rsyncPath $argList+'; Der Eintrag zum Sichern der Clients: $Conf{RsyncClientCmd} = '$sshPath -q -x -l claudia $host /usr/bin/sudo $rsyncPath $argList+'; Einbinden von zu sichernden Verzeichnisbäumen. Wenn Datenbanken gesichert werden sollen, hier ist der Platz für den Datenbanksicherungsbefehl. $Conf{DumpPreUserCmd} = '/usr/bin/sudo mount /boot'; $Conf{DumpPostUserCmd} = '/usr/bin/sudo umount /boot'; $Conf{RestorePreUserCmd} = '/usr/bin/sudo mount /boot'; $Conf{RestorePostUserCmd} = '/usr/bin/sudo umount /boot'; Einige wichtige Variablen:$Conf{RsyncShareName}, $Conf{BackupFilesExclude} definieren die zu sichernden Daten $Conf{WakeupSchedule} bestimmt, wann das Backupsystem turnusmäßig seine Runde macht, $Conf{BlackoutPeriods} spezifiziert Tageszeiten, zu denen kein Backup erfolgen soll, wird mitunter durch die Einstellungen in $Conf{BlackoutBadPingLimit} und $Conf{BlackoutGoodCnt} umgangen. SSH TunnelUnix basierte Rechner im Netzwerk werden über ssh gesichert. Dafür muss dem Benutzer backuppc das Recht eingeräumt werden, sich auf dem entfernten Rechner ohne Angabe eine Passwortes anzumelden. Vorgehen: Als userA auf dem Client und als Benutzer backuppc auf dem Server mit ssh-keygen -t rsa ohne Angabe eines Passworts Schlüsselpaare erzeugen. Der öffentliche Schlüssel id_rsa.pub vom Benutzer backuppc wird in die Datei ~/.ssh/authorized_keys von userA geschrieben cat backuppc_id_rsa.pub >> ~/.ssh/authorized_keys Beispiel der ~/.ssh/authorized_keys mit zusätzlicher Beschränkung auf die Server IP from="192.168.foo.foo" ssh-rsa c2EAAAABIwAAA(...)Qb69lo== backuppc@server-hostname auf dem Server wird der Schlüssel von userA hinzugefügt cat userA_id_rsa.pub >> ~/.ssh/known_hosts Die Bekanntmachung des Hosts geschieht einfacher über die Verbindungsaufnahme auf der Kommandozeile - siehe Testkommando. Zur Überprüfung des Fingerabdrucks des Rechners mit dem eine Verbindung aufgebaut werden soll: ssh-keygen -lAn der Eingabeaufforderung: /etc/ssh/ssh_host_rsa_key.pub Beispiel known_hosts rechnerA,192.168.foo.foo ssh-rsa IwAAAQEAq2PwH9(...)qDmlogB== Das Heimatverzeichnis von backuppc sollte existieren. Verbindungstest: Eingeloggt als Benutzer backuppc wird mittels ssh userA@rechnerB versucht eine Verbindung aufzubauen. Sollte es wider Erwarten nicht klappen, d.h. wird immer noch ein Passwort verlangt, sollten die Datei- und Verzeichnisrechte auf dem Zielrechner überprüft werden. Funktioniert der passwortlose Zugang auf der Kommadozeile, wird BackupPC angewiesen es genauso zu machen: $Conf{RsyncClientCmd} = '$sshPath -q -x -l userA $host /usr/bin/sudo $rsyncPath $argList+'; $Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l userA $host /usr/bin/sudo $rsyncPath $argList+'; WOL (wake on lan) aktivierenRechner, die bei Nichtbenutzung in den Bereitschaftsmodus wechseln, weckt Conf{PingCmd} = '/etc/BackupPC/pc/wakeup.sh 00:16:cb:a3:39:64 1 $host'; wobei /etc/BackupPC/pc/wakeup.sh folgendermaßen aussieht: #!/bin/bash # Jeglicher Output auf die Standardausgabe muss vermieden werden wakeonlan $1 &>/dev/null # Zeit in Minuten zum Aufwachen sleep ${2}m # ist der Rechner erreichbar? /bin/ping -c 1 -w 3 $3 Mac OSX Rechner: Systemeinstellungen - Energie sparen - "Bei administrativen Netzwerkzugriffen aufwachen" aktivieren. Mac Laptops mit Snow Leopard (>2009) wachen auch über WLAN auf, wenn das Netzteil angeschlossen und der Deckel aufgeklappt ist. Bei Windows findet sich diese Einstellung im Eigenschaftsdialog der Netzwerkkarte. Wo genau hängt von der verwendeten Hardware ab. Beispiel für SiS 900-basierte PCI-Fast Ethernet-Adapter: Gerätemanager -> Netzwerkadapter -> Energieverwaltung -> Aktivieren von "Gerät kann den Computer aus dem Standbymodus aktivieren" UND "Nur Verwaltungsstationen können Standbycomputer aktivieren". Links:
Unterstützen sie mich: Wenn sie über den Link unten auf Amazon etwas bestellen, bekomme ich eine kleine Provision. Sie zahlen nicht mehr.Kommentare
Ansicht der Kommentare:
(Linear | Verschachtelt)
Noch keine Kommentare
Kommentar schreiben
|
SuchelanguageThemen |