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

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

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 ./

Extrai corretamente, mas cria /home/username/forum/var/www/forumpasta. O que preciso fazer para extraí-lo para /home/username/forumuma pasta?

Obrigado

Responder1

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

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

var/e www/são dois componentes do caminho, daí o 2in --strip-components.

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

tar tjf forum.tar.bz2

Passe-o lesspara que você possa usar as teclas de seta para rolar.

Uma observação geral sobre as opções utilizadas:

  • x- extrai um tarball, sempre coloco ele como primeira opção pois é mais lógico ver o que um comando faz
  • c- cria um tarball
  • t- lista o conteúdo de um tarball
  • j- fazer tar descompactar tarballs compactados bzip2. Isto é redundante com a .bz2extensão, então você também pode remover esta 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)

Responder2

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

Isto fará com que a pasta 'fórum' fique no nível superior do arquivo e, portanto, será extraída diretamente para a pasta atual quando você executar:

tar jxf forum.tar.bz2 ./

Responder3

A solução rápida (e possivelmente errada) seria alterar seu comando para alterar os diretórios antes de tarar. Ou seja:

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

informação relacionada