tar - Entfernt führende Verzeichniskomponenten beim Extrahieren

104

Wie können Sie nur das Zielverzeichnis und nicht den vollständigen Verzeichnisbaum extrahieren?

komprimieren

tar cf /var/www/site.tar /var/www_bak/site

Extrakt

tar xf /var/www/site.tar -C /tmp

Dies erzeugt:

/tmp/var/www/site

Wie kann vermieden werden, dass beim Extrahieren der Datei der gesamte Verzeichnisbaum erstellt wird?

Was ich daraus extrahieren möchte:

/tmp/site
Clarkk
quelle

Antworten:

34

Warum nicht die -COption beim Erstellen verwenden:

$ tar cf /var/www/site.tar -C /var/www_bak/ site
Quanten
quelle
1
TMTOWTDI. Das würde auch funktionieren, mit der gleichen -COption;)
MikeyB
12
Er möchte den Pfad von einigen führenden Komponenten entfernen, nicht das Ausgabeverzeichnis ändern. Die richtige Antwort finden Sie weiter unten.
Aymericbeaumet
4
Wir können es nicht verwenden, wenn jemand anderes das Archiv vorbereitet.
Weil `` `_t = Präfix - $ (Datum +% Y% m% d); tar -cjf ".backups / $ _ t.tar.bz2" --transform = "s # ^ (\ ./)? # $ _ t / # x;" - Dateien ...; tar -df ".backups / $ _ t.tar.bz2" --strip-components = 1 `` `
AnrDaemon
258

Sie möchten folgende --strip-components=NUMBEROptionen nutzen tar:

 --strip-components=NUMBER
       strip NUMBER leading components from file names on extraction

Ihr Befehl wäre:

tar xfz /var/www/site.gz --strip-components=2 -C /tmp
MikeyB
quelle
19
Diese Antwort ist besser, weil Sie vor der Teererzeugung nicht darüber nachdenken müssen. Sie können es mit einer bereits erstellten TAR-Datei verwenden. Vielen Dank @MikeyB!
Fabien Quatravaux
4
Ich freue mich, Ihnen mitteilen zu können, dass dies sowohl in GNU-Teer als auch in BSD-Teer funktioniert.
Nathan Osman
4
und weil Sie vielleicht nicht der Teerschöpfer sind ... (oder wenn Sie es mit einem anderen Tool machen und dieses Tool dumme Sachen macht ...)
Xenoterracide
Möglicherweise fehlt --strip-componentsIhnen noch die Markierung, wenn Sie die in die Busybox eingebettete Implementierung von verwenden tar.
Sylvainulg
1
@FabienQuatravaux Ja, wenn Sie einen Fehler gemacht und ein Archiv erstellt haben, das führende Verzeichnisse enthält, die Sie beim Extrahieren nicht sehen möchten. Es ist jedoch klarer, das Archiv zunächst ohne die führenden unerwünschten Verzeichnisse zu erstellen.
Calaf