bareos-fuse: virtuelles Dateisystem für Bareos

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.

Mit bareos-fuse mounten Sie ein virtuelles Dateisystem, das Informationen zu Bareos bereitstellt.

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.

Schreiben Sie einen Kommentar

Wir erfassen keine E-Mailadresse. Pflichtfelder sind mit * markiert.

Scroll to Top