Obnam Konfigurationsdateien und Einstellungen
=============================================

In diesem Kapitel geht es um Obnams Konfigurationsdateien: Wo sie sind, was
sie enthalten, und wie sie verwendet werden.

Wo ist meine Konfiguration?
---------------------------

Obnam sucht seine Konfigurationsdatei an folgenden Orten:

* `/etc/obnam.conf`
* `/etc/obnam/*.conf`
* `~/.obnam.conf`
* `~/.config/obnam/*.conf`

In `/etc/obnam` und `~/.config/obnam` werden alle Dateien mit dem
Suffix `.conf` in "asciibetischer" Reihenfolge geladen. Das ist ähnlich
wie alphabetisch, basiert aber auf dem Zeichencode und nicht auf dem,
was die Leute denken. Im Gegensatz zu alphabetisch ist das sprachunabhängig.

Alle Dateien der obigen Liste können existieren (oder auch nicht). Wenn
eine Datei vorhanden ist wird sie gelesen, dann die nächste Datei, und
so weiter. Eine Einstellung in einer Datei wird durch eine spätere Datei
überschrieben, wenn auch dort die Option eingestellt ist. Zum
Beispiel könnte `/etc /obnam.conf` den `log-level` auf `INFO` setzen,
aber `~ /.obnam.conf` setzt ihn dann auf `DEBUG`, weil der Benutzer
detailiertere Log-Dateien wünscht.

Die Obnam Konfigurationsdateien in `/ etc` gelten für alle, die Obnam
auf dieser Maschine benutzen. Das ist wichtig: Sie gelten nicht nur für
`root`.

Wenn Sie mehrere Konfigurationen für Obnam haben möchten, um zum
Beispiel verschiedene Backup-Repositories zu nutzen, müssen Sie die
Dateien so ablegen oder benennen, das sie nicht zur Liste oben passen.
Zum Beispiel:

* `/etc/obnam/system-backup.profile`
* `~/.config/obnam/online.profile`
* `~/.config/obnam/usbdrive.profile`

Bei der Ausführung von Obnam müssen Sie dann nur noch
das File angeben, mit dessen Konfiguration gearbeitet werden soll:

    obnam --config ~/.config/obnam/usbdrive.profile`

Sollten Sie außerdem wünschen das Obnam sämtliche Standard-Konfigurationsdateien
ignoriert, müssen Sie die Option `--no-default-config` mitgeben:

    obnam --no-default-config --config ~/.obnam-is-fun.conf

Optionen die auf der Kommandozeile geben werden, überschreiben Werte die aus
Konfigurationsdateien geladen wurden.

Syntax der Konfigurationsdateien
--------------------------------

Obnam Konfigurationsdateien verwenden die [INI-Datei] Syntax,
genauer gesagt die Variante, die von der Python [ConfigParser] Bibliothek implementiert wird.

Sie sehen so aus:

    [config]
    log-level = debug
    log = /var/log/obnam.log
    encrypt-with = CAFEBEEF
    root = /
    one-file-system = yes

[INI-Datei]: https://de.wikipedia.org/wiki/Initialisierungsdatei
[ConfigParser]: http://docs.python.org/2/library/configparser.html

Die Namen der Konfigurationsvariablen sind die gleichen wie die
entsprechenden Befehlszeilenoptionen. Wenn `--foo` die
Befehlszeilenoption ist, dann ist die Variable in der Datei `foo`. Jede
Kommandozeilen-Option `- foo = bar` kann in einer Konfigurationsdatei
als `foo = bar` verwendet werden. Es gibt einige Ausnahmen (`--
no-default-config`, `--config`, `--help` und ein paar andere), aber die
würden Sie sowieso nicht in einer Konfigurationsdatei setzen.

Jede Option oder Einstellung hat einen Typ. Meist ist dies nicht
relevant, es sei denn, Sie geben ihr einen Wert der ungeeignet ist. Die
beiden wichtigsten Ausnahmen sind:

* Boolean bzw. ja/nein oder an/aus
  Zum Beispiel ist `--exclude-caches` eine Option, die entweder an ist
  (wenn die Option benutzt wird) oder aus ist (wenn sie nicht benutzt wird).
  Für jede Option `--foo` gibt es auch eine Option `--no-foo`. In
  Konfigurationsdateien wird `foo` durch setzen auf `yes` oder `true`
  eingeschaltet, und durch `no` oder `false` abgeschaltet.

* Einige Optionen können eine Werteliste aufnehmen, zum Beispiel
  `--exclude`. Sie können `--exclude` verwenden so oft Sie wollen,
  jedes Mal wird ein neuer Ausschluss hinzugefügt, statt den vorherigen
  zu ersetzen. In einer Konfigurationsdatei trennen Sie die Werte mit
  Komma und schreiben Sie hintereinander, z.B.: `exclude = foo, bar,
  baz`. Durch später geladenen Konfigurationsdateien wird die gesamte
  Werteliste ersetzt, anstatt hinzugefügt.

Eine genauere Erklärung der Syntax finden Sie in der **cliapp**(5)
manpage Ihres Systems oder im WWW [cliapp man page (englisch)].

[cliapp man page (englisch)]: http://code.liw.fi/cliapp/cliapp.5.txt

Meine Konfiguration prüfen
--------------------------

Weil Obnam seine Konfigurationsdaten von mehreren Stellen bezieht,
kann es schwierig sein herauszufinden welche Optionen nun wirklich
Anwendung finden. Die Option `--dump-config` hilft dabei.

    obnam --config ~/.obnam.fun --exclude-caches --dump-config

Diese Option liest alle Konfigurationsdateien und gibt eine Zusammenfassung
auf stdout aus, die jede Einstellung enthält, als wäre `--dump-config`
nicht benutzt worden.

So können Sie schnell die Einstellungen überprüfen. Außerdem ist das ein
guter Anfang wenn Sie mal eine Konfigurationsdatei von Hand neu erstellen
möchten.

Alle Konfigurationseinstellungen herausfinden
---------------------------------------------

Diese Anleitung beinhaltet und erklärt noch nicht alle Einstellungen.
Obnam bietet aber eine integrierte Hilfe (`obnam - help`) und eine
manpage, die automatisch aus der integrierten Hilfe erzeugt wird (`man
obnam` oder siehe [obnam man page (englisch)]
oder [deutsch][obnam man page (deutsch)]). Eines Tages wird dieses Kapitel
einen automatisch generierten Abschnitt enthalten der jede Einstellung
erklärt. Bis dahin dürfen Sie gern mit dem Finger auf Obnams Autor
zeigen und über seine Faulheit kichern.

[obnam man page (englisch)]: http://code.liw.fi/obnam/obnam.1.txt
[obnam man page (deutsch)]: http://code.liw.fi/obnam/obnam.1.de.txt
