To nie działa:
tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive
Nie jest dla mnie oczywiste, co by to zrobiło poza wyodrębnieniem go i przeniesieniem plików.
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 )
jeśli chcesz wyodrębnić archiwum tar w innym miejscu, po prostu cd do katalogu docelowego i rozpakuj go tam:
Użyte polecenie przeszuka plik
foo/bar
w archiwum i rozpakuje go.źródło
Robić:
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ść, żecd
dobrze działa.źródło
możesz podać nazwę pliku
./file
po pliku tar.jeśli działa, oznacza to, że utworzyłeś tar za pomocą
./
. użyj mniej polecenia, aby zobaczyć zawartość tar.źródło
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
To, co udało mi się rozwiązać, to
Po przesłaniu i wyodrębnieniu archiwum tar tworzone są wymagane podkatalogi.
źródło
Zmień katalog, do którego chcesz wyodrębnić
jeśli położenie pliku wyodrębnionego w /u01/backup.tar, to
Wyodrębnij w następujący sposób:
źródło
Komenda:
tar -xzvf foo.tar.gz -C /home/user/bar/
rozpakuje plik wejściowy „foo.tar.gz” do katalogu
/home/user/bar
podczas drukowania przetworzonych plików.źródło