Kann ich einen bestimmten Ordner mit tar in einen anderen Ordner extrahieren?

14

Ich bin neu in der Welt von Linux und scheine in einen Stolperstein geraten zu sein. Ich weiß, dass ich ein bestimmtes Archiv mit dem Befehl tar xvfz archivename.tar.gz sampledir/extrahieren kann, aber wie kann ich es extrahieren sampledir/, testdir/anstatt auf den Pfad, in dem sich das Archiv gerade befindet, /tmp/archivename.tar.gzund ich möchte extrahieren, sampledirauf testdirwelchen sich das Archiv im Pfad befindet /tmp/testdir.

PeanutsMonkey
quelle

Antworten:

19

Was Sie suchen, ist die -COption:

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

Verwendung gemäß Ihrem Beispiel:

$ tar xvzf archivename.tar.gz -C /tmp/testdir/ sampledir/

Es könnte Sie auch interessieren, dass moderne Versionen von tardas zFlag nicht benötigen, um komprimierte Dateien zu dekomprimieren. Sie werden bemerken, dass es ein ist .gzund das Richtige automatisch tun.

Heimwerker5
quelle
Vielen Dank. Lustigerweise habe ich das vor dem Posten der Frage versucht und es ist fehlgeschlagen. Vielleicht habe ich eine Option verpasst. Ich werde es noch einmal versuchen.
PeanutsMonkey
Brillanz. Bei großen Archiven vergesse ich das immer.
Zmonteca
3

Du musst keine verrückten Spiele spielen, um alles zu enttarnen. Tar unterstützt nur das Extrahieren einer Teilmenge der Dateien in einem Archiv, wie im folgenden (einfachen) Beispiel gezeigt:

/tmp $ mkdir tarsrc
/tmp $ cd tarsrc
/tmp/tarsrc $ mkdir a b
/tmp/tarsrc $ touch a/aaa b/bbb
/tmp/tarsrc $ tar cf ../tartest.tar .
/tmp/tarsrc $ cd ..
/tmp $ mkdir tardest
/tmp $ cd tardest
/tmp/tardest $ tar xf ../tartest.tar ./a    
/tmp/tardest $ ls -R
.:
a/

./a:
aaa

Der Trick ist, dass die Pfadangabe genau mit dem Inhalt der Tarfile übereinstimmen muss. Also, wenn Sie eine machen tar tf, wenn der Pfad mit beginnt ./, müssen Sie das einfügen, und wenn er es nicht hat, müssen Sie es weglassen. Wenn Sie einen Sub-Sub-Sub-Sub-Sub-Sub-Sub-Sub-Sub-Pfad extrahieren möchten, landen Sie am Ende N Ebenen tief im Dateisystem.

womble
quelle
Danke womble. Möglicherweise ist es nicht das richtige Beispiel, aber ich vergleiche tar mit Winzip, WinRAR usw. und möglicherweise ist tar der falsche Befehl. Da ich jedoch ein Beispiel für die Aufhebung der Archivierung von gzip- und bzip-Dateien durch tar gesehen habe, hatte ich gehofft, dass ich dies könnte wende einen ähnlichen Prozess an, z. B. wähle die Datei aus, die du aus dem Archiv entfernen möchtest (tar tut dies) und wähle den Pfad, in den du extrahieren möchtest (tar tut dies nicht, es sei denn, ich befinde mich in einem bestimmten Verzeichnis).
PeanutsMonkey
-CDann möchten Sie die Option tar.
womble