Datensicherung mit TAR - bestimme Verzeichnisse ausgrenzen - wie ?

kielar

kielar

Linux-Eroberer
Moin Moin,

wollte gern mein Home-Laufwerk sichern mit TAR ... jedoch befinden sich hier aber auch
Verzeichnisse wie ".kde" welche ich nicht mit sichern möchte ...

Wie kann ich solche Verzeichnisse bei TAR ausgrenzen ?
 
Hi,

Du suchst die Option "--exclude"

Code:
tar -czvf backupfile.tar.gz . --exclude=diese_datei_nicht --exclude=dieses_verzeichnis_auch_nicht/

Sieh Dir auch mal "man tar" an.

Gruß Daniel
 
Habe mit dem folgenden Befehl das mal getestet:
tar cvf /home/kielar/sonstiges/test.tar /home/kielar/sonstiges/test/ --exclude=/home/kielar/sonstiges/.test

Hat auch wunderbar funktioniert, also das Vezeichniss test wurde mitgenommen,
aber nicht das Verzeichnis .test - Klappt also ...

Aber trotzdem erhalten ich folgende Meldungen:
tar: Removing leading `/' from member names
/home/kielar/sonstiges/test/
tar: --exclude=/home/kielar/sonstiges/.*: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors


Es hat aber wie gesagt wunderbar funktioniert ...

Hi,

Du suchst die Option "--exclude"

Code:
tar -czvf backupfile.tar.gz . --exclude=diese_datei_nicht --exclude=dieses_verzeichnis_auch_nicht/

Sieh Dir auch mal "man tar" an.

Gruß Daniel
 
Ich hab nicht herausgefunden, wie genau das exclude-Muster behandelt wird. Wenn ich z.B.

tar cpzf archiv.tar.gz -C /quelle . --exclude=./nicht

ausführe dann steht der . ja nach regex für ein beliebiges Zeichen, d.h. auch /quelle/xy/nicht würde ausgeschlossen, da der . für y stünde.

Und bei

--exclude=nicht/

wäre es wohl dasselbe? Ich möchte ja nur /quelle/nicht ausschließen, kein anderen Unterverzeichnisse, die "nicht" heißen.

$ find tar/
tar/
tar/doch
tar/doch/nicht
tar/nicht

(sind alles Verzeichnisse)

Also exclude='nicht/' funktioniert gar nicht:

$ tar cpf ./archiv.tar -C tar . --exclude='nicht/'
$ tar tf archiv.tar
./
./doch/
./doch/nicht/
./nicht/

exclude=./nicht funktioniert
tar cpf ./archiv.tar -C tar . --exclude='./nicht'
tar tf archiv.tar
./
./doch/
./doch/nicht/

exclude='\./nicht' funktioniert auch.

tar (GNU tar) 1.20
 
Zuletzt bearbeitet von einem Moderator:
Hi,

in der Manpage von tar steht auch nichts von Regexps, sondern von pattern matching. Das ist insbesondere im Shell Bereich fast nie das gleiche, schau mal in die Manpage der Bash unter Pattern Matching.

Aber ich gebe dir Recht, es ist bei vielen Befehlen leider haeufig nicht ganz eindeutig welche Muster genau eigentlich erlaubt sind, und wie sie verwendet werden.

Edit:
Ausserdem muss man immer darauf achten Strings entsprechend zu "quoten", so dass sie auch korrekt an das Programm uebergeben werden, und nicht etwa schon von der Shell interpretiert werden.

mfg,
bytepool
 
1. ein eigener Thread haette sicher keinen umgebracht, 2007er Beitraege muss man kaum ausgraben
2. wie du schon erkannt hast ist --exclude PATTERN keine regex
 
1. ein eigener Thread haette sicher keinen umgebracht, 2007er Beitraege muss man kaum ausgraben
Hatte ich auch ueberlegt, aber es ist ja schon "On Topic", von daher find ich dass das eigentlich noch OK ist. Sonst kann man ja auch gleich ne Policy starten, jeden Thread, der laenger als 3 Monate oder so nicht mehr angefasst wurde, automatisch zu schliessen...
 
in der Manpage von tar steht auch nichts von Regexps, sondern von pattern matching.
Right, aber "pattern matching" kann so ziemlich alles bedeuten, inklusive regex-pattern-matching.. (Diese Nomenklatur ist IMHO ambivalent und zu schwammig um hier als einzige Informationsquelle genutzt zu werden.)
"Beweis":
Code:
man find|less -p'-regex p'
Und in der bash manpage nachschaun, hm. Warum nicht in der zsh- und/oder csh manpage? Oder im Textmanual von cmd.exe? :O

Hier steht zumindest
The ‘--exclude=pattern’ option prevents any file or member whose name matches the shell wildcard (pattern) from being operated on. For example, to create an archive with all the contents of the directory ‘src’ except for files whose names end in ‘.o’, use the command ‘tar -cf src.tar --exclude='*.o' src’.
Selbst das ist nicht sonderlich genau, aber man kann wohl davon ausgehen, dass damit bourne-shell kompatible wildcards gemeint sind..
Btw, die --exclude-from=FILE Option sieht gut aus, damit kann man den eigentlichen Befehl schön kompakt halten.

Anywho, mein Glauben in manpages ist erschüttert.


edit: "Beweis" gefixt: s/-name/-regex/
 
Zuletzt bearbeitet:
Right, aber "pattern matching" kann so ziemlich alles bedeuten, inklusive regex-pattern-matching..
Logisch, aber meiner Erfahrung nach werden regulaere Ausdruecke explizit erwaehnt, wenn tatsaechlich regulaere Ausdruecke gemeint sind. Werden sie nicht ausdruecklich erwaehnt, wird die Syntax normalerweise nicht unterstuetzt, und es gelten primitivere Regeln, wie sie z.B. fuer's globbing benutzt werden.

Und in der bash manpage nachschaun, hm. Warum nicht in der zsh- und/oder csh manpage?
Lesen bildet, auch die zsh und csh Manpages sind sicherlich lesenswert. ;)
Aber im Ernst, weil fast alle GNU Programme einem aehnlichen Schema folgen, und die Bash Manpage immer die erste Anlaufstelle sein sollte. Wenn in GNU Programmen allgemein von "Pattern Matching" gesprochen wird, ist meiner Erfahrung nach, wie du ja auch schon schriebst, bourne shell kompatibles pattern matching gemeint. Ich habe ernste Zweifel ob die csh Manpage dich da weiter bringt.

Oder im Textmanual von cmd.exe? :O
Klingt wie Windows. Da gibt's Dokus die nicht dem Schema "klicken Sie von A ueber B nach Z" folgen?

Anywho, mein Glauben in manpages ist erschüttert.
Patches welcome. ;)
Aber ja, auch Manpages lassen sich haeufig noch verbessern.

mfg,
bytepool
 
Logisch, aber meiner Erfahrung nach werden regulaere Ausdruecke explizit erwaehnt, wenn tatsaechlich regulaere Ausdruecke gemeint sind.
Schon klar, mein Punkt war nur, dass manpages keine "Erfahrung" erfordern sollten. Sie sollten klar dokumentieren was wie funkitoniert und notfalls auf andere manpages o.ä. verweisen. Ganz nach dem Motto "An undocumented feature is a bug." (zB besteht ein riesiger Unterschied zwischen zsh und ksh globbing.)

Hat mich halt verwundert, grade bei einer GNU manpage hätt ich mehr Pedanterie erwartet.
 

Ähnliche Themen

Datensicherung einses dedizierten Servers via rsync mit und ohne Linux

tar Fehlermeldung/Backup

MySQL DB im remote abfrage

openn SuSE 13.1 - 64-BIt erlaubt nicht mehr als 20GB für /root

OpenSuse 12.2 Reinstallation nach Formatierung / Übernahme von Home-Verzeichnissen

Zurück
Oben