Czy mogę wyodrębnić określony folder za pomocą tar do innego folderu?

14

Jestem nowy w świecie Linuksa i wydaje się, że wpadłem na przeszkodę. Wiem, że mogę wyodrębnić określone archiwum za pomocą polecenia, tar xvfz archivename.tar.gz sampledir/ale jak mogę wyodrębnić sampledir/je testdir/zamiast ścieżki, w której znajduje się archiwum, np. Archiwum znajduje się na ścieżce /tmp/archivename.tar.gzi chciałbym wyodrębnić, sampledirdo testdirktórego znajduje się ścieżka /tmp/testdir.

PeanutsMonkey
źródło

Odpowiedzi:

19

To, czego szukasz, to -Copcja:

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

Zastosowanie, na przykład:

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

Być może zainteresuje Cię informacja, że ​​współczesne wersje tarnie wymagają zflagi do dekompresji plików gzip; zauważą, że jest to .gzautomatyczne działanie.

Złota rączka 5
źródło
Dzięki. Zabawnie, że próbowałem tego przed opublikowaniem pytania i nie udało się. Może przegapiłem opcję. Spróbuję jeszcze raz.
PeanutsMonkey
Blask. Zawsze o tym zapominam w przypadku dużych archiwów.
zmonteca
3

Nie musisz grać w szalone gry, w których wszystko jest rozpakowane. Tar w pełni obsługuje tylko wyodrębnianie podzbioru plików z archiwum, jak pokazano w następującym (trywialnym) przykładzie:

/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

Sztuczka polega na tym, że specyfikacja ścieżki musi dokładnie pasować do zawartości pliku tar. Więc jeśli to zrobisz tar tf, jeśli ścieżka zaczyna się od ./, musisz to włożyć, a jeśli nie ma, musisz to pominąć. Ponadto, jeśli chcesz wyodrębnić sub-sub-sub-sub-sub-sub-sub-sub-ścieżkę, skończy ona N poziomów głęboko w systemie plików, gdy skończysz.

womble
źródło
Dzięki womble. Może nie jest to dobry przykład do użycia, ale porównuję tar z Winzip, WinRAR itp. I być może tar jest niepoprawnym poleceniem do użycia, jednak widząc, że widziałem przykład tar rozpakującego archiwum plików gzip i bzip, miałem nadzieję, że mógłbym zastosuj podobny proces, np. wybierz plik, który chcesz rozpakować (tar robi to) i wybierz ścieżkę, do której chcesz wyodrębnić (tar nie robi tego, chyba że jestem w określonym katalogu).
PeanutsMonkey
Chcesz więc -Copcję tarowania.
womble