Bei tar gibt es einige Stolperfallen zu beachten. Ein beliebter Punkt ist das falsche verwenden von exclude listen. Die dort angegebenen Pfade werden immer mitgesichert. Das kann ganz schön nerven, besonders wenn die versehentlich mit gesicherten Dateien riesig sind
Wenn man als Backup ein tar einsetzt, dann möchte man häufig bestimmte Dateien oder ganze Verzeichnisse ausklammern und nicht mitsichern.
Häufig passiert es dann, das die Exclude Datei aber anscheinend ignoriert wird.
Ich möchte hierfür mein einfaches Rezept vorstellen, das bisher immer funktionierte, gerade heute morgen wieder und auch auf sun solaris, also nicht nur mit gnu tar funktioniert.
Das Rezept lautet: mache einen Minitest mit tar cvf ../versuch.tar .
Es wird das auszuschliessende Verzeichnis oder die Datei mit angezeigt.
So und nicht anders, muss auch der Name in der Exclude Datei aussehen.
Fertig, das wars.
Beispiel: gegeben sei
Vereinfachte Darstellung eines Testverzeichnisses wichtiger.txt log .ich_bin_eine_punktdatei unwichtiger.txt ./x: will_gesichert_werden.sh ./log: eine_andere_datei.txt nochein.log irgendein.log
In dieser Umgebung das tar Kommando absetzen:
#Solaris Beispiel tar cvf ../versuch.tar . a ./ 0K a ./x/ 0K a ./x/will_gesichert_werden.sh 1K a ./log/ 0K a ./log/irgendein.log 1K a ./log/nochein.log 1K a ./log/eine_andere_datei.txt 1K a ./wichtiger.txt 1K a ./unwichtiger.txt 1K a ./.ich_bin_eine_punktdatei 1K
Was man hier sieht, ist die im tar gespeicherte Dartellung der Dateien. Genau so müssen sie im Exclude angegeben werden!
In der exlude Datei sieht das dann zum Beipiel so aus:
#cat ../exclude ./log/ ./unwichtiger.txt
Anmerkung: Es dürfen keine Leerzeichen oder andere Whitespaces vor oder hinter den Dateienamen stehen, sonst geht das schief!
Ein so präpariertes exclude File bindet man so ein:
tar cvfX ../versuch.tar ../exclude . a ./ 0K a ./x/ 0K a ./x/will_gesichert_werden.sh 1K a ./log excluded a ./wichtiger.txt 1K a ./unwichtiger.txt excluded a ./.ich_bin_eine_punktdatei 1K
Hier informiert tar auch gleich über die Teile, die excludiert worden sind. Ein tar tvf kann man sich nun eigentlich sparen:
tar tvf ../versuch.tar tar: blocksize = 12 drwxr-xr-x 30574/30574 0 Sep 21 11:16 2007 ./ drwxr-xr-x 30574/30574 0 Sep 21 11:01 2007 ./x/ -rwxr--r-- 30574/30574 739 Oct 19 08:41 2006 ./x/will_gesichert_werden.sh -rwxr--r-- 30574/30574 739 Sep 21 11:02 2007 ./wichtiger.txt -rw-r--r-- 30574/30574 7 Sep 21 09:55 2007 ./.ich_bin_eine_punktdatei