Frage zu tar

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von ramann, 21.04.2008.

  1. ramann

    ramann Eroberer

    Dabei seit:
    20.06.2007
    Beiträge:
    59
    Zustimmungen:
    0
    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
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Herr Nilsson, 21.04.2008
    Herr Nilsson

    Herr Nilsson Eroberer

    Dabei seit:
    21.03.2008
    Beiträge:
    62
    Zustimmungen:
    0
    Ort:
    Dortmund
    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
     
  4. #3 Wolfgang, 21.04.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    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 ;)
     
  5. #4 Herr Nilsson, 22.04.2008
    Herr Nilsson

    Herr Nilsson Eroberer

    Dabei seit:
    21.03.2008
    Beiträge:
    62
    Zustimmungen:
    0
    Ort:
    Dortmund
    @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?)
     
  6. ramann

    ramann Eroberer

    Dabei seit:
    20.06.2007
    Beiträge:
    59
    Zustimmungen:
    0
    das script ist schön - aber der gzip die lösung.
    wie sich rausstellte sollte das tar.gz "nur ein gz sein :-)
     
Thema:

Frage zu tar

Die Seite wird geladen...

Frage zu tar - Ähnliche Themen

  1. Anfänger Frage: Welchen Standard wählen

    Anfänger Frage: Welchen Standard wählen: Hallo, früher wußte ich nie wie ich anfangen muß. Heute weiß ich einfach anfangen und mir alles selbst beibringen. Was ich mich aber noch...
  2. Sicherheitsfragen zu PHP-Anwendungen auf der Webseite

    Sicherheitsfragen zu PHP-Anwendungen auf der Webseite: Hallo miteinander, habe eine kleine Webseite (4 Jahre statisch, keine Sicherheitsprobleme bisher) und ich frage mich, wie sicher die Verwendung...
  3. Fragen zu find

    Fragen zu find: Hallo an alle, Ich bin ziemlich neu in der Linux Welt und habe paar frage Ich soll alle Datein im system finden die vor weniger als drei Tagen...
  4. Frage zu QNX - habe login nie gefunden

    Frage zu QNX - habe login nie gefunden: ′
  5. Kleine Frage (Solaris ein Cloud Betriebsystem?)

    Kleine Frage (Solaris ein Cloud Betriebsystem?): ′