Como extraio o tar para um diretório diferente?

18

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 e mover os arquivos.

    
por Kit Sunde 01.11.2011 / 11:24

7 respostas

28

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, veja "Alterando o Diretório de Trabalho" em seu manual )

    
por 01.11.2011 / 11:35
9

se você quiser extrair um arquivo tar em outro lugar apenas cd para o diretório de destino e descompactá-lo:

 mkdir -p foo/bar
 cd foo/bar
 tar xzvf /tmp/foo.tar.gz

O comando que você usou procuraria o arquivo foo/bar no arquivo e o extraia.

    
por 01.11.2011 / 11:35
9

Fazendo:

(cd foo/bar ; tar xf /tmp/foo.tar.gz )

faria o trabalho.

Basicamente, o que é que está gerando 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.

    
por 15.11.2011 / 13:59
0
tar -xf ancd.tar.gz my/name/file

você pode fornecer o nome do arquivo com ./file após o arquivo tar.

tar -xf ancd.tar.gz ./my/name/file

se estiver funcionando significa que você criou um tar com ./ . use menos comandos para ver o conteúdo do tar.

less ...tar.file  
    
por 02.03.2016 / 07:41
0

Encontrei o que parece ser um problema semelhante e resolvi-o.

O problema estava na criação do arquivo, e não no arquivo criado.

Ao tentar distribuir um arquivo na pasta A, forneci o caminho para o arquivo original no comando tar

tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*

O que eu consegui 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
    
por 24.05.2018 / 19:06
0

Altere o diretório em que você deseja extrair

cd /u02/restore

se a localização do arquivo de extração sob /u01/backup.tar então

Extraia da seguinte forma:

cd /u02/restore
tar -xvf /u01/backup.tar
    
por 16.09.2018 / 12:14
0

O comando:

tar -xzvf foo.tar.gz -C /home/user/bar/

extrairá o arquivo de entrada "foo.tar.gz", no diretório /home/user/bar , enquanto imprime os arquivos processados.

    
por 22.09.2018 / 13:54

Tags