Bei einem dateibasierten Backup wollte ich nicht immer alle Dateien und Unterverzeichnisse in die Sicherung mit aufnehmen.

Viele Tool wie restic, backup oder auch tar unterstützen eine externe Datei, wo diese Ausnahmen gepflegt werden können.

Allerdings vergesse ich manchmal diese Datei zu pflegen oder die Syntax ist etwas umständlich.

Manchmal möchte man auch nur-mal-eben-schnell (tm) ein Verzeichnis ausschließen.

Dafür gibt es die Möglichkeit über eine Datei namens CACHEDIR.TAG zu nutzen.

Voraussetzungen

Diese Datei muss nur zwei Voraussetzungen erfüllen:

  1. Der Name der Datei muss CACHEDIR.TAG lauten und zwar in genau der Schreibweise.
  2. Der Inhalt der Datei muss einen bestimmten Inhalt haben.

Name der Datei

Der Name der Datei muss genau CACHEDIR.TAG lauten; hierbei ist auch auf Groß- und Kleinschreibung zu achten.

Inhalt der Datei

Am Anfang der Datei muss ein bestimmter Inhalt stehen, er lautet:

1Signature: 8a477f597d28d172789f06886806bc55

So eine Datei kann auch über ein Shell erstellt werden, z.B. so:

1echo "Signature: 8a477f597d28d172789f06886806bc55" > CACHEDIR.TAG

Wichtig hierbei sind nur die ersten 43 Octets der Datei. Danach können noch weitere Informationen kommen, wie z.B. eine kleine Notiz:

1Signature: 8a477f597d28d172789f06886806bc55
2# Diese Datei bedeutet, dass dieses Unterverzeichnis und seine Inhalte vom Backup ausgeschlossen werden.

Aber auch hier muss auf die Groß- und Kleinschreibung beim Inhalt der Datei geachtet werden. Alternativ kann man diese Datei auch nutzen, um eine solche Datei mit Ausnahmen zu erstellen. Diese Datei lässt sich dann z.B. mit dem Programm tar auswerten, um ein Archiv zu erstellen, was diese Verzeichnisse auslässt.

Beispiel:

1find . -name CACHEDIR.TAG | sed -e 's/[/]CACHEDIR.TAG-//g' >/tmp/excludes
2 tar cvf /tmp/backup.tar --exclude-from/tmp/excludes .

Diese Tagging-Konvention lässt sich somit auch für weitere Tools benutzen, auch wenn diese die Konvention noch nicht direkt unterstützen. Definitionen von Ausnahme-Listen unterstützen meist viele Programme und über diesen kleinen Umweg, lässt sich die Tagging-Technik schon jetzt meist ohne Änderung der Programme nutzen.

Die Tools restic und borg können mit dem Parameter --exclude-caches angewiesen werden, die Datei CACHEDIR.TAG zu berücksichtigen. Hier werden dann automatisch die Verzeichnisse mit ihren Unterinhalten vom Backup ausgenommen, die eine solche Datei enthalten.

Beispiel:

1restic -r /backup/backup_home_dirs backup --exclude-caches /home/

Auch Verzeichnisse wie /var/cache lassen sich damit elegant aus dem Backup aussparen.

Ich bin sehr froh dieses entdeckt zu haben, da ich jetzt nicht mehr für jede Ausnahme pflegen muss und dann wieder das Backup-Script irgendwo einchecken oder auf irgendwelche Server verteilen muss. Hier reicht jetzt das triviale Anlegen einer Datei in dem gewünschten Verzeichnis.

Credits

Die ursprüngliche Idee bzw. Vorschlag stammt von Bryan Ford und kann hier nachgelesen werden.