tar - Usuwa wiodące komponenty katalogu podczas rozpakowywania


104

Jak można wyodrębnić tylko katalog docelowy, a nie całe drzewo katalogów?

Kompresja

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

wyciąg

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

Spowoduje to:

/tmp/var/www/site

Jak można uniknąć tworzenia całego drzewa katalogów podczas rozpakowywania pliku?

Do czego chcę to wyodrębnić:

/tmp/site

Odpowiedzi:


34

Dlaczego nie skorzystać z -Copcji podczas tworzenia:

$ tar cf /var/www/site.tar -C /var/www_bak/ site

1
TMTOWTDI. To też by działało, używając tej samej -Copcji;)
MikeyB

12
Chce usunąć ścieżkę z niektórych wiodących komponentów, a nie zmienić katalog wyjściowy. Prawidłowa odpowiedź znajduje się poniżej.
aymericbeaumet

4
Nie możemy go użyć, gdy ktoś inny przygotuje archiwum.

Ponieważ `` `t = prefiks - $ (data +% Y% m% d); tar -cjf ".backups / $ _ t.tar.bz2" --transform = "s # ^ (\ ./)? # $ _ t / # x;" -- akta...; tar -df ".backups / $ _ t.tar.bz2" --strip-components = 1 ``
AnrDaemon

258

Chcesz skorzystać z --strip-components=NUMBERopcji tar:

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

Twoje polecenie będzie:

tar xfz /var/www/site.gz --strip-components=2 -C /tmp

19
Ta odpowiedź jest lepsza, ponieważ nie musisz o tym myśleć przed utworzeniem tar. Możesz go użyć z już utworzonym plikiem tar. Dzięki @MikeyB!
Fabien Quatravaux

4
Miło mi poinformować, że działa to zarówno w tar GNU, jak i BSD.
Nathan Osman,

4
a ponieważ nie możesz być twórcą smoły ... (lub jeśli robisz to za pomocą innego narzędzia, a to narzędzie robi głupie rzeczy ...)
xenoterracide

może jednak nadal brakować --strip-componentsflagi, jeśli używasz implementacji osadzonej w tarbusyboksie.
sylvainulg

1
@FabienQuatravaux Cóż, tak --- jeśli popełniłeś błąd i utworzyłeś archiwum zawierające wiodące katalogi, których nie chcesz widzieć podczas rozpakowywania. Ale przede wszystkim łatwiej jest zbudować archiwum bez wiodących niepożądanych katalogów.
Calaf
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.