Como faço para extrair um tarball, pulando alguns dos diretórios principais?

5

Estou arquivando uma pasta usando o seguinte comando:

tar jcf "home/username/forum/forum.tar.bz2" /var/www/forum/

Então estou extraindo usando:

tar jxf forum.tar.bz2 ./

É extraído corretamente, mas cria a pasta /home/username/forum/var/www/forum . O que preciso fazer para extraí-lo na pasta /home/username/forum ?

Obrigado

    
por Bakhtiyor 02.09.2011 / 20:59

3 respostas

6

Ao criar o arquivo, use -C /var/www/ para alterar o diretório atual para / var / www ao criar o arquivo.

tar jcf home/username/forum/forum.tar.bz2 -C /var/www/ forum

Isso fará com que a pasta 'forum' esteja no nível mais alto do arquivo e, portanto, será extraída diretamente na pasta atual quando você executar:

tar jxf forum.tar.bz2 ./
    
por dv3500ea 02.09.2011 / 21:22
12

Além da resposta do dv3500ea , você pode usar o próximo comando para extrair tarballs contendo var/www/forum/ to forum/ :

tar xjf forum.tar.bz2 --strip-components=2

var/ e www/ são dois componentes de caminho, portanto, o 2 em --strip-components .

Se você não tiver certeza do que está dentro de um tarball, use a opção t :

tar tjf forum.tar.bz2

Enfie-o em less para usar as teclas de seta para rolagem.

Uma nota geral sobre as opções usadas:

  • x - extrai um tarball, eu sempre o coloco como primeira opção, já que é mais lógico ver o que um comando faz
  • c - cria um tarball
  • t - lista o conteúdo de um tarball
  • j - faz o tar descompactar os tarballs comprimidos do bzip2. Isso é redundante com a extensão .bz2 , portanto, você também pode remover essa opção
  • f - esta opção espera um nome de arquivo como argumento, é o tarball a ser extraído ( tar xf file.tar.bz2 ) ou criado ( tar cf file.tar.bz2 )
por Lekensteyn 02.09.2011 / 23:16
0

A solução rápida (e possivelmente errada) seria alterar seu comando para alterar os diretórios antes do tarring. IE:

cd /var/www/forum; tar jcf "home/username/forum/forum.tar.bz2" .
    
por Ryan Gooler 02.09.2011 / 21:22