Isso não funciona:
tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive
Não é óbvio para mim o que faria isso além de extraí-lo no lugar e mover os arquivos.
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 )
se você deseja extrair um arquivo tar em outro lugar, basta cd para o diretório de destino e descompactá-lo lá:
O comando que você usou pesquisaria o arquivo
foo/bar
no arquivo e o extrairia.fonte
Fazendo:
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 quecd
funciona bem.fonte
você pode dar o nome do arquivo com o
./file
arquivo tar.se estiver funcionando significa que você criou um alcatrão
./
. use menos comando para ver o conteúdo do alcatrão.fonte
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
O que eu pude fazer para resolver é
Ao transferir e extrair o tarball, os subdiretórios necessários são criados.
fonte
Mude o diretório onde você deseja extrair
se o local do arquivo de extração em /u01/backup.tar,
Extraia da seguinte maneira:
fonte
O comando:
tar -xzvf foo.tar.gz -C /home/user/bar/
extrairá o arquivo de entrada "foo.tar.gz" para o diretório
/home/user/bar
, enquanto imprime os arquivos processados.fonte