Respostas:
De 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.
ou seja, tar xC /foo/bar -f /tmp/foo.tar.gz
deve fazer o trabalho. (no FreeBSD, mas o GNU tar é basicamente o mesmo a esse respeito, consulte "Alterando o diretório de trabalho" em seu manual )
Fazendo:
(cd foo/bar ; tar xf /tmp/foo.tar.gz )
faria o trabalho.
Basicamente, o que faz é gerar um novo shell (os parênteses), neste subshell, altere o diretório para foo/bar
e, em seguida, descompacte o arquivo.
Você pode alterar ;
por &&
para ter certeza de que cd
funciona bem.
tar -xf ancd.tar.gz my/name/file
você pode dar o nome do arquivo com o ./file
arquivo tar.
tar -xf ancd.tar.gz ./my/name/file
se estiver funcionando significa que você criou um alcatrão ./
. use menos comando para ver o conteúdo do alcatrão.
less ...tar.file
Encontrei um problema semelhante e o resolvi.
O problema estava na criação do arquivo e não no arquivo criado.
Ao tentar fazer tar e transferir um arquivo no diretório A, forneço o caminho para o arquivo original no comando tar
tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*
O que eu pude fazer para resolver é
cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*
Ao transferir e extrair o tarball, os subdiretórios necessários são criados.
tar -xvf MyFile.tar