bareos-fuse (bareosfs) verbindet sich mit dem Bareos Director und stellt die Backup-Informationen als virtuelles Dateisystem dar. Damit erhalten Anwender also Zugriff auf Informationen zu Clients, Backup-Jobs, Volumes und Pools – über die Kommandozeile oder den grafischen Dateimanager.
Dank bareos-fuse gelingt der Zugriff auf Bareos-Informationen über das Dateisystem statt über die WebUI oder die bconsole. FUSE (Filesystem in Userspace) ist ein Kernel-Modul, das es erlaubt, Dateisystem-Treiber aus dem Kernel-Modus in den User-Modus zu verlagern. FUSE kommt beispielsweise zum Einsatz, um entfernte Rechner per SSH, Cloud-Speicher oder Cluster-Dateiysteme einzubinden. Auch Bareos nutzt diese Technik, um ein virtuelles Dateisystem zu mounten und dort Informationen zu Backup-Jobs, Volumes und mehr anzuzeigen.
Dieser Artikel stellt das Python-Modul bareos-fuse vor. Es wird im Bareos-GitHub-Repository gepflegt, ist aber kein offizieller Bestandteil unserer Open-Source-Backup-Software. Vielmehr handelt es sich um ein eigenständiges Projekt, für das die Bareos-Entwickler keinen offiziellen Support anbieten. Für Rückfragen bietet sich daher unsere Mailingliste bareos-users an.
Die Installation erfolgt am besten über den Python Package Index (PyPI):
pip install bareos-fuse
Das Python-Modul erfordert zusätzlich die FUSE-Entwicklungsdateien, die Sie über den Paketmanager Ihrer Distribution nachrüsten können.
bareosfs mounten
Eine Übersicht über die vorhandenen bareos-fuse-Optionen liefert der folgende Aufruf:
bareos-fuse.py --help
Um das virtuelle Dateisystem bareosfs nach /mnt zu mounten, geben Sie auf dem Bareos Director dieses Kommando ein:
bareos-fuse.py -o address=localhost,password=secret /mnt
Für die ersten Versuche starten Sie das Werkzeug am besten im Vordergrund und aktivieren den Debugging-Modus. Außerdem können Sie ein Logfile angeben:
bareos-fuse.py -f -d -o address=localhost,password=secret,logfile=/var/log/bareosfs.log /mnt
Sollte es Schwierigkeiten mit dem Unmounten geben, hilft jedenfalls ein beherzter Aufruf von killall bareos-fuse.py.
Zum Mounten sind nicht zwingend Root-Rechte erforderlich; auf den meisten Distributionen gibt es eine entsprechende Gruppe, die Benutzern den Umgang mit FUSE und damit auch das Mounten solcher Dateisysteme gestattet. Das Passwort ist dasselbe, das in der Datei bconsole.conf für den Zugriff auf die Bareos Console hinterlegt ist.
Tipp: Es ist überdies möglich, einen eigenen Benutzer für das Mounten von bareosfs anzulegen und für diesen ein eigenes Passwort zu setzen:
echo "configure add console name=bareosfs password=secret profile=operator" | bconsole
Der anschließende Mount-Befehl lautet dann entsprechend:
bareos-fuse.py -f -d -o address=localhost,name=bareosfs,password=secret,logfile=/var/log/bareosfs.log /mnt
Informationen zu Jobs und Volumes anzeigen
Anschließend stehen unter dem Mount Point /mnt/ Informationen zu allen Clients, Backup-Jobs, Pools und Volumes bereit:
# ls -la /mnt/ ... drwxr-xr-x 38 root root 4096 Jan 1 1970 clients/ drwxr-xr-x 2 root root 4096 Jan 1 1970 jobs/ drwxr-xr-x 2 root root 4096 Jan 1 1970 pools/ drwxr-xr-x 2516 root root 4096 Jan 1 1970 volumes/ # ls -la /mnt/jobs/all/ drwxr-xr-x 5 root root 4096 Apr 23 22:12 jobid=128_level=F_status=T drwxr-xr-x 5 root root 4096 Apr 23 22:12 jobid=129_level=F_status=T ...
Im Verzeichnis /mnt/jobs finden Sie mehrere Unterordner:
- jobs/job=JOBNAME
jeweils ein Unterverzeichnis für jeden im Director definierten Jobnamen; hier liegen alle gelaufenen Jobs - jobs/all
eine Liste aller Backup-Jobs - jobs/each_jobname_last_run
der jeweils zuletzt gelaufene Job für jeden Jobnamen; daran lässt sich ablesen, ob der letzte Lauf erfolgreich war - jobs/running
Liste der derzeit laufenden Jobs
Auch die Volumes sind unterhalb von /mnt/ gemountet und können daher mit ls betrachtet werden:
# ls -la /mnt/volumes/ drwxr-xr-x 5 root root 4096 Jan 1 1970 Full-0001 -r--r----- 1 root root 1073693339 Sep 18 09:00 Full-0001=Full drwxr-xr-x 5 root root 4096 Jan 1 1970 Full-0002 -r--r----- 1 root root 1073678209 Sep 18 15:00 Full-0002=Full drwxr-xr-x 5 root root 4096 Jan 1 1970 Full-0003 -r--r----- 1 root root 1073685404 Sep 18 18:00 Full-0003=Full ... drwxr-xr-x 5 root root 4096 Jan 1 1970 Full-0010 -rw-rw---- 1 root root 732319090 Sep 22 15:00 Full-0010=Append
Außer dem Dateinamen und der Größe wird auch jeweils der Volume-Status hinter dem Gleichheitszeichen angezeigt, zum Beispiel Full, Append, Used usw. Wenn Sie den Inhalt eines Volume-Verzeichnisses auflisten, sehen Sie dort neben einer Datei info.txt mit den internen Informationen auch die Statusinformationen und ein Unterverzeichnis mit den Jobs. Diese können Sie aber auch an anderer Stelle im bareosfs genauer betrachten.
Inhalte von Backup-Jobs auflisten
Um den Inhalt eines Backup-Jobs auf der Kommandozeile zu betrachten, geben Sie hinter ls den Pfad zum File Daemon (/mnt/clients/…), gefolgt von backups und dem Verzeichnis an:
# ls -la /mnt/clients/client1-fd/backups/jobid\=887_level\=F_status\=T/ total 13 drwxr-xr-x 5 root root 4096 Jul 1 07:04 ./ drwxr-xr-x 22 root root 4096 Jan 1 1970 ../ drwxr-xr-x 6 root root 0 Jan 1 1970 data/ -r--r--r-- 1 root root 661 Jan 1 1970 info.txt -r--r--r-- 1 root root 4070 Jan 1 1970 job.log
Die Verzeichnisnamen setzen sich aus der Job-ID, dem Level (Full, Incremental usw.) und dem Status (zum Beispiel T = completed successfully, W = terminated with warnings usw.) zusammen.
Daten wiederherstellen
Auch der Restore von Dateien und Verzeichnissen aus einem Backup-Job ist dank bareos-fuse auf der Kommandozeile möglich. Beachten Sie, dass Sie das Dateisystem mit den beiden Mount-Parametern -o restoreclient und -o restorejob einhängen müssen, damit das Wiederherstellen gelingt.
Damit ein normaler Lesezugriff nicht aus Versehen einen Restore-Job auslöst, kommen bei bareosfs erweiterte Dateiattribute zum Einsatz. Neben den „normalen“ Eigenschaften einer Datei, wie beispielsweise Besitzer oder Berechtigungen, kennt Linux die sogenannten Extended Attributes. Jedes dieser Attribute hat einen Namen und einen Wert. Um erweiterte Attribute zu definieren, dient das Tool getfattr, zum Betrachten setfattr.
Schauen wir uns zunächst mit getfattr die erweiterten Attribute an:
# cd /mnt/clients/client1-fd/backups/jobid\=887_level\=F_status\=T/data/ # getfattr -d . user.bareos.do user.bareos.do_options="mark | restore" user.bareos.restored="no" user.bareos.restorepath="/var/cache/bareosfs/jobid=887"
Um Daten auf der Shell wiederherzustellen, reicht es aus, das erweiterte Attribut user.bareos.do für eine Datei oder ein Verzeichnis auf den Wert restore zu setzen:
# setfattr -n user.bareos.do -v restore . # getfattr -d . user.bareos.do="restore" user.bareos.do_options="mark | restore" user.bareos.restore_job_id="913" user.bareos.restored="yes" user.bareos.restorepath="/var/cache/bareosfs/jobid=887"
Es ist außerdem möglich, einzelne Dateien aus einem solchen Backup wiederherzustellen. In dem Fall setzen Sie den restore-Wert für einzelne Dateien, zum Beispiel so:
# ls datei1 datei2 dir/ dir/ # setfattr -n user.bareos.do -v restore datei1 # getfattr -d datei1 file: datei1 user.bareos.do="restore" user.bareos.do_options="mark | restore" user.bareos.restore_job_id="913" user.bareos.restored="yes" user.bareos.restorepath="/var/cache/bareosfs/jobid=887" ... # cat datei1 Hallo. Ich bin der Inhalt von datei1.
Sobald das Attribut user.bareos.restored auf yes springt, steht die Datei an dieser Stelle für den Lesezugriff zur Verfügung. Wer wissen will, wo die wiederhergestellte Datei tatsächlich liegt, schaut sich das Attribut user.bareos.restorepath an. (Für die normale Benutzung ist das aber unerheblich, da die Datei direkt über bareosfs zur Verfügung gestellt wird.)
Virtuelles Dateisystem als Alternative
Dank bareos-fuse gibt es die Möglichkeit, mit Kommandozeilentools wie find, grep oder awk direkt auf die Backup-Informationen über ein virtuelles Dateisystem zuzugreifen. Auch die grafischen Dateimanager bieten eine gute Übersicht über das Backup-System. Es kann überdies sehr interessant sein, die Backup-Größen mit einem Programm wie QDirStat zu betrachten. Bedenken Sie, dass hinter jedem Verzeichnis eine Abfrage beim Bareos Director steht. Programme, die alle Unterverzeichnisse durchforsten, können durchaus Last erzeugen.
Haben Sie Fragen oder Anregungen zu diesem Artikel? Dann hinterlassen Sie gerne einen Kommentar. Sie können auch mit anderen Bareos-Nutzern auf der Mailingliste diskutieren.