Box Backup zwischen Ubuntu 10.04 Client und 14.04 Server

Da ich so ein bisschen von Duplicity die Nase voll hatte musste eine modernere Lösung her. Nach Prüfung aller Möglichkeiten der Ubuntu Datensicherung Programmliste fiel die Wahl auf Box Backup. Das Setup verlief erstaunlich problemlos .. seht selbst.

Server Setup

Wir folgen mal der offiziellen Anleitung (englisch) und einem Artikel bei Pro-Linux (deutsch) so Pi*Daumen ..

Paket installieren..

apt-get install boxbackup-server

Service Status prüfen …

service boxbackup-server status

Nix …

Config Dateien erzeugen

Backup-Daten-Verzeichnis anmelden…

raidfile-config /etc/boxbackup 4096 /var/backups

Meldet zwar “WARNING: userland RAID is disabled.” aber sonst alles okay.

Servername festlegen, leere Nutzeraccount-Config und Server-Zertifikate anlegen…

bbstored-config /etc/boxbackup backup.deinedomain.tld bbstored

Hm, es wird Fehler “Checking permissions on /var/backups [..] doesn’t appear to have the necessary permissions” gemeldet.

Also /var/backups/boxbackup für Nutzer bbstored.bbstored angelegt, /etc/boxbackup/raidfile.conf gelöscht und mit raidfile-config neu angelegt. Dann läuft obiges Kommando durch..

Hinweis: backup.deinedomain.tld ist der Hostname des Backup-Servers, über den die Clients zugreifen.

Config hier: /etc/boxbackup/bbstored.conf Nutzeraccounts hier: /etc/boxbackup/bbstored/accounts.txt Speicherort hier: /etc/boxbackup/raidfile.conf

Zertifikate Zertifikate Zertifikate …

Als nächstes entlang der offiziellen Anleitung und Hinweisen in den Ausgaben bei der Config-Erstellung .. das **Zertifikat **anlegen …

Der Einfachheit befinden wir uns in /etc/boxbackup, wodurch die Zertifikate in einem Verzeichnis ca landen.

bbstored-certs ca init

Hinweis: Man kann auch seine eigenen vorhandenen Zertifikate nutzen, dazu bitte beim Pro-Linux Artikel schauen.

Jetzt das Server-Zertifikat mit dem erstellten Zertifikat signieren ..

bbstored-certs ca sign-server bbstored/backup.deinedomain.tld-csr.pem

Noch an die richtige Stelle kopieren ..

cp -a ca/servers/backup.deinedomain.tld-cert.pem \
    /etc/boxbackup/bbstored/backup.deinedomain.tld-cert.pem
cp -a ca/roots/clientCA.pem /etc/boxbackup/bbstored/clientCA.pem

Nochmal ins Config /etc/boxbackup/bbstored.conf gelugt ..

TimeBetweenHousekeeping steht auf 15 Minuten .. d.h. gelöschte Dateien auf dem Client sind noch 15 Minuten vom Server abrufbar. ExtendedLogging hab ich für erste Test angeschalten.

Nutzeraccounts anlegen

Wieder weiter in der Anleitung

Anlegen eines Nutzers mit ID 1000000A (Beispiel, kann auch “4C3A5B6A” oder “1” für “00000001” sein) für den Default-Speicherort 0 mit Softlimit 20GB und Hardlimit 25GB an.

bbstoreaccounts create 1000000A 0 20G 25G

Die IDs können sich ausgedacht werden, zusammen mit dem Zertifikat authentifizieren sie einen Nutzeraccount am Server.

Das kann übrigens noch nachträglich angepasst werden.

bbstoreaccounts setlimit 1000000A 3000M 4000M

Mit folgenden Kommando bekommt man übrigens den noch freien Speicher angezeigt

bbstoreaccounts info 1000000A

Und nun endlich den Server starten

service boxbackup-server start

Läuft!

Das erweiterte Logging ist übrigens in /var/log/syslog zu sehen.

Client Setup

Wieder schön die deutsche Anleitung entlang …

Zunächst das Paket installieren ..

apt-get install boxbackup-client

Jetzt die Configs erzeugen im Snapshot-Modus (per Cron getriggert statt kontiunierlich im “lazy” Modus) .. und zwar für die Vhosts und das home-Verzeichnis ..

bbackupd-config /etc/boxbackup snapshot 1000000A backup.deinedomain.tld /var/lib/bbackup /var/www/vhosts /home

Client-ID ist die Nutzer-ID auf dem Server: 1000000A Backup-Domain ist backup.deinedomain.tld Arbeitsverzeichnis von bbackup ist /var/lib/bbackup zu sichernde Verzeichnisse: /var/www/vhosts und /home

Backup des Wiederherstellungs-Schlüssels machen irgendwo **Extern **(Dropbox?)

Die hier: /etc/boxbackup/bbackupd/1000000A-FileEncKeys.raw

Zertifikat signieren

Und nun das Client-Zertifikat vom Server signieren lassen.

Dazu die 100000A-csr.pem zum Backup-Server senden per scp.

scp /etc/boxbackup/bbackupd/1000000A-csr.pem root@backup.deinedomain.tld:/tmp/1000000A-csr.pem

Und dort signieren, wobei man im Verzeichnis mit den Server-Zertifikaten sein muss.

bbstored-certs ca sign /tmp/1000000A-csr.pem

Dann zum Client zurückkopieren (hier vom Client aus holen):

scp root@backup.meinedomain.tld:/etc/boxbackup/ca/clients/1000000A-cert.pem /etc/boxbackup/bbackupd/1000000A-cert.pem
scp root@backup.meinedomain.tld:/etc/boxbackup/ca/roots/serverCA.pem /etc/boxbackup/bbackupd/serverCA.pem

Konfiguration checken

Jetzt noch kurz die Config checken /etc/boxbackup/bbackupd.conf … ist aber für unseren Snapshot-Modus völlig okay.

ExtendedLogging hab ich für erste Test auch hier angeschalten.

Noch das Admin-Benachrichtigung-Script /etc/boxbackup/bbackupd/NotifySysadmin.sh querlesen .. die Emails gehen lt Variable SENDTO an “root” .. ist fürs erste Okay.

Weiter in der Client-Anleitung bei Pro-Linux Seite 2 ..

Jetzt den Client starten ..

service boxbackup-client start

Läuft!

Noch den Cron einrichten .. soll 2 Uhr nachts laufen .. per crontab -e editieren

0 2 * * * /usr/sbin/bbackupctl -q sync

Backup starten

Und das erste Backup initiieren ..

bbackupctl sync

Das meldet ein paar Statusinfos und ist fix fertig.

Im Hintergrund beginnt der Backup-Client mit der Arbeit. Diese kann man im /var/log/syslog verfolgen. Da steht dann z.B.

bbackupctl[26050]: Control command sent: sync bbackupd[26046]: NOTICE: Beginning scan of local files

.. und später …

NOTICE: Finished scan of local files NOTICE: File statistics: total file size uploaded [größe lokal], bytes already on server 0, encoded size [größe remote]

Mit folgenden Kommando bekommt man übrigens den noch freien Speicher angezeigt

bbackupquery -q usage quit

Und mit bbackupquery kann man bequem im Remote-Backup-Repository herumsurfen und auch ggf. Dateien wiederherstellen. Siehe dazu bei Pro-Linux (deutsch) und in der offiziellen Doku (englisch).

Verzeichnisse ausschließen

Mittels ExcludeDir und ExcludeFile (und weiteren) kann man einzelne Verzeichnisse und/oder Dateien ausschließen, die man nicht im Backup haben will – oder die Fehler in der /var/syslog werfen. /dev/null ist so ein Kandidat, und Foto-Verzeichnisse bei mir, welches ich lokal ohnehin zigfach sichere.

BackupLocations {    
    var-www-vhosts     {        
        Path = /var/www/vhosts        
        ExcludeDir = /var/www/vhosts/fotos.rh-flow.de/httpdocs/gallery/var/albums        
        ExcludeDir = /var/www/vhosts/fotos.rh-flow.de/httpdocs/gallery/var/thumbs    
        }    
    ..
}   

Insofern man die Verzeichnisse nach dem ersten Backup exkludiert, braucht man sich nicht zu wundern, wenn die Backup-Space-Usage nicht am nächsten Tag abnimmt. Die Dateien werden erst beräumt, wenn das Softlimit überschritten wurde.

CPU-Last reduzieren (Update)

Im Snapshot-Modus ist der Backupclient bzgl. Ressourcen Festplattenzugriffe und CPU nicht knauserig. Wer allerdings einen Monitoring-Dienst einsetzt, den werden die Mails nerven die zeigen dass der Backup-Dienst läuft. Leider bringt Box Backup wohl von Haus aus keine Bremse mit (max. Dateien pro Sekunde, max. CPU-Last o.ä.) – also keine Parameter die man in der bbackup.conf einstellen könnte. Bleibt noch der nice-Level des Daemons (start-stop-daemon). Mittels Anpassung der /etc/init.d/boxbackup-client

echo -n "Starting $DESC: "    
start-stop-daemon --start --quiet --nicelevel 19 --pidfile $PIDFILE \
    --exec $DAEMON -- $CONF     .. stop) .. reload|force-reload) .. restart)    
echo -n "Restarting $DESC: "     ..    
start-stop-daemon --start --quiet --nicelevel 19 --pidfile \
    $PIDFILE --exec $DAEMON -- $CONF     .. *)

Anschließend den Dienst mittels service boxbackup-client restart neustarten und gleich mit bbackupctl sync zum Test antriggern.

Fazit

Mittels der tollen aber teilweise veralteten deutschen Anleitung und den super TODOs die die Config-Generatoren ausspucken, kommt man recht schnell und zuverlässig voran. Das Backup tut aus den Stand heraus und löst bei mir das in die Jahre gekommende Duplicity ab.

Schon alleine die Config-Dateien und das ein Dienst läuft der nur von Zeit zu Zeit angetriggert wird, statt eines ollen selber zusammengefrickelten Scriptes welches Duplicity steuert – schon allein dafür ist es der Aufwand wert!

Leider leider kann man nicht einfach externen FTP-Backup-Space als Ziel angeben, sodass man im VServer-Umfeld einen echten anderen Server benötigt – oder schlicht die NAS zuhause.

Was setzt ihr als Backup-Lösungen ein? Welche Erfahrungen habt ihr so gemacht? Gerne als Kommentare hier oder per Twitter @rhflow_de.