find + tar problem mit -print0

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

find + tar problem mit -print0

Beitrag von finupsen » 26.11.2005 11:59:48

hallo,

Ich möchte ein backup aller dateien erstellen , die mit "find" ermittelt worden sind.

Alle dateien , ausser die mit der endung mp3 und ogg:
$ find ~/Desktop/projekte/ -type f \( ! -name "*.mp3" -or ! -name "*.ogg" \) -print

anschliessend STDOUT nach "tar" gepiped:
... | tar --files-from=- -cvzf /dev/st0

Das funktioniert schonmal ganz gut, allerdings machen file-namen mit leerzeichen probleme.
Das problem, dachte ich, könne man mit -print0 lösen. Leider ist dem aber nicht so:

"tar: Removing leading `/' from member names" bekomme ich als fehlermeldung ....

Hat jemand einen heissen tip für mich ?
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Benutzeravatar
Cloonix
Beiträge: 589
Registriert: 20.11.2004 10:42:24
Wohnort: München
Kontaktdaten:

Beitrag von Cloonix » 26.11.2005 12:25:39

"tar: Removing leading `/' from member names" bekomme ich als fehlermeldung ....
Soweit ich weiß hat diese Meldung aber nichts mit deiner Expression zu tun. Das krieg ich auch das öfteren. Aber genauer hab ich da noch nicht nachgeforscht.
proud to be 100% M$ free (except X300T)
http://claus.freakempire.de
http://debian.freakempire.de

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 26.11.2005 14:45:12

Also eine Möglichkeit wäre

Code: Alles auswählen

find .... -print0 | xargs -0 tar -cvzf /dev/...
hier könnte es aber zu Problemen kommen, wenn es zuviele Dateien sind, so dass xargs tar mehrmals aufruft. Besser ist daher evtl das hier (ungetestet)

Code: Alles auswählen

find ... -print > filelist
tar --files-from=fiellist -cvzf /dev/st0
Alternativ könntest du dir mal cpio anschauen, ist eine tar-alternative, die mit Nullterminertern Strings zurechtkommt.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 26.11.2005 14:53:33

ich empfehle immer

Code: Alles auswählen

dar -R ~/Desktop/projekte/ -X "*.mp3" -X "*.ogg"
wobei er da natürlich die Unterordner beibehält...
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 27.11.2005 11:56:55

aaach, wie doof, man darf den ausdruck "-name expr" nicht in klammern setzen.

so funktioniert es jetz:

find ~/Desktop/projekte/ -type f ! -name '*.mp3' -and ! -name '*.ogg' -print \
| tar --files-from=- -cvzf - | buffer -o /dev/st0

danke euch allen ;)
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Antworten