Frage zu tar

R

ramann

Eroberer
Hi Zusammen,

folgender Befehl:

find ./ -type f -name "*.xml" -exec tar czvf {}.gz {} --remove-files \;

Packt mir alle xml´s ein ein eigenes TAR Archiv. Problem ist dann, dass wenn ich ein tar auf einem Unterverzeichniss entpacke, der Name des Unterverzechniss mit in TAR Archiv ist.

Frage: Kann ich das umgehen?

Danke & Gruß
Bjoern

tar (GNU tar) 1.14 mit suse 9.2, GNU find version 4.1.20
 
Was genau willst Du? Du packst alle XML-Dateien in jeweils eine eigene tar.gz-Datei? Aber es ist doch gerade der Sinn von tar, mehrere Dateien zu einem einzigen Archiv zusammenzufassen.

Falls es nur um das Komprimieren geht, wäre Dir wohl eher mit dem Programm gzip gedient.

Meines Wissens wird tar immer den Pfad bei der Sicherung miteinbeziehen. Falls es hilft: Bei zip gibt es die Option -j, die dies verhindert.

Falls es denn unbedingt ein tar-Archiv sein soll, wäre ein Skript hilfreich, das alle Dateien in ein Arbeitsverzeichnis kopiert, aus diesem Arbeisverzeichnis eine tar.gz-Datei erstellt und anschließend das Arbeitsverzeichnis löscht. So was würde in diese Richtung gehen:

mkdir temp; cd temp; find .. -type f -and -name "*.xml" -exec cp {} . \; ; tar -czf ../archiv.tar.gz . ; cd .. ; rm -rf temp
 
Hallo
Du kannst in das Verzeichnis wechseln, was dann aber besser lösbar ist, wenn du die Ausgabe von find an eine while read verfütterst.
Allerdings läufst du bei Doppelnamen gefahr, Dateien zu überschreiben.
Ungetesteter Schnellschuß ohne Prüfung auf Doppelnamen:
Code:
find /full/path/ -type f |
while read file; 
do 
cd "$(dirname "$file")";
tar -cf  /ful/path/to/tararchiv/arch.tar "${file##*\/}";
 done

Gruß Wolfgang
PS Sehr aufmerksam, dass du alle wichtigen Infos gleich mitgegeben hast. Danke ;)
 
@Wolfgang: Ich würde das sogar als wirklich schönes Skript ansehen, selbst wenn es kein "Schnellschuß" wäre! Eine wirklich nette "pipe while read"-Konstruktion; auf den Aufruf von "basename" verzichtet... Das muß ich mir unbedingt merken! :) :)

Eine Kleinigkeit: Der Parameter für tar muß -rf heißen. ("r" steht für "append" - wer hat sich denn das ausgedacht?)
 
das script ist schön - aber der gzip die lösung.
wie sich rausstellte sollte das tar.gz "nur ein gz sein :-)
 

Ähnliche Themen

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

tar network backup problem

'xml Parser' in bash

Windows clients können nicht mehr auf lange laufendes System zugreifen

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Zurück
Oben