Odpowiedzi:
Od man tar
:
-C directory
In c and r mode, this changes the directory before adding the
following files. In x mode, change directories after opening the
archive but before extracting entries from the archive.
tzn. tar xC /foo/bar -f /tmp/foo.tar.gz
powinien wykonać pracę. (na FreeBSD, ale tar GNU jest zasadniczo taki sam pod tym względem, patrz „Zmiana katalogu roboczego” w podręczniku )
Robić:
(cd foo/bar ; tar xf /tmp/foo.tar.gz )
wykonałby zadanie.
Zasadniczo polega na spawnowaniu nowej powłoki (nawiasów), w tej podpowłoce zmień katalog na, foo/bar
a następnie rozpakuj plik.
Można zmienić ;
przez &&
aby mieć pewność, że cd
dobrze działa.
tar -xf ancd.tar.gz my/name/file
możesz podać nazwę pliku ./file
po pliku tar.
tar -xf ancd.tar.gz ./my/name/file
jeśli działa, oznacza to, że utworzyłeś tar za pomocą ./
. użyj mniej polecenia, aby zobaczyć zawartość tar.
less ...tar.file
Natrafiłem na coś, co wydaje się być podobnym problemem i rozwiązałem go.
Problem polegał na tworzeniu pliku, a nie na utworzonym pliku.
Podczas próby tarowania i przesłania pliku w katalogu A podałem ścieżkę do oryginalnego pliku w poleceniu tar
tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*
To, co udało mi się rozwiązać, to
cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*
Po przesłaniu i wyodrębnieniu archiwum tar tworzone są wymagane podkatalogi.
tar -xvf MyFile.tar