Tar: Descompactando arquivos específicos

Publicado por Francisco Ambrozio em 04/02/2010

[ Hits: 46.846 ]

Blog: http://franciscoambrozio.wordpress.com

 


Tar: Descompactando arquivos específicos



Se você tem um arquivo "tarado" gigantesco (calma, não é o que você está pensando! Arquivo "tarado" nada mais é do que um arquivo compactado pelo utilitário tar com um de seus métodos de compressão) e quer extrair apenas um mísero arquivo naquela maçaroca toda, aqui vai a dica.

Em primeiro lugar, o tar nos possibilita listar os arquivos que estão comprimidos em um tarball. A opção em linha de comando que utilizamos para isto é a -t ou --list. Logo, a para listarmos o conteúdo de nosso arquivo tar, usamos:

tar tvf NossoArquivo.tar.gz

É lógico que se o arquivo for muito grande ficará difícil ler a saída deste comando, podemos utilizar um paginador para nos ajudar:

tar tvf NossoArquivo.tar.gz | less

Ou então buscar o arquivo que desejamos especificamente.

tar tvf NossoArquivo.tar.gz | grep NomeDoArquivoProcurado

Tendo encontrado nosso precioso arquivo, para extraí-lo usamos a seguinte sintaxe:

tar vxf NossoArquivo.tar.gz caminho/para/arquivo/desejado

Vamos deixar ainda mais claro. Suponhamos que em NossoArquivo.tar.gz contenha o arquivo ProjetoImportante.txt, que está no diretório Projetos que por sua vez está no diretório Trabalho e queremos apenas este arquivo, logo o comando seria:

tar vxf NossoArquivo.tar.gz Trabalho/Projetos/ProjetoImportante.txt

Com isto iremos extrair o arquivo Trabalho/Projetos/ProjetoImportante.txt no diretório atual. Se quisermos direcioná-lo à um diretório específico, usamos a opção -C do tar.

tar vxf NossoArquivo.tar.gz -C ${HOME}/Arquivos Trabalho/Projetos/ProjetoImportante.txt

Assim, Trabalho/Projetos/ProjetoImportante.txt será extraído no diretório ${HOME}/Arquivos. Importante: para que tenhamos o resultado desejado, neste caso, a ordem dos fatores altera o produto. O comando tar vxf NossoArquivo.tar.gz Trabalho/Projeto/ProjetoImportante.txt -C ${HOME}/Arquivos NÃO funcionará para extrair o arquivo desejado no local indicado.

Obs.: a mesma abordagem pode ser utilizada para extrair um diretório e todo o seu conteúdo. Em nosso exemplo, se quiséssemos extrair todo o conteúdo de Projetos, utilizaríamos:

tar vxf NossoArquivo.tar.gz Trabalho/Projetos

Em tempo, mais uma dica: Digamos que você tenha vários arquivos que tem um determinado padrão na composição de seu nome e que você deseja usar isto para agilizar seu trabalho e extraí-los todos de uma só vez. Exemplo, no diretório Projetos temos vários arquivos que começam com a palavra Projeto e queremos usar o coringa "*" para extraí-los. Neste caso temos que usar a opção --wildcards do tar, assim:

tar --wildcards -vxf NossoArquivo.tar.gz Trabalho/Projetos/Projeto*

Enfim pessoal, é isto! Dúvidas? Deixem de preguiça e:

man tar

:)

Grande abraço.

Outras dicas deste autor

Não sabe onde está? - Procure!

Listando arquivos que contém determinado padrão recursivamente dentro de um diretório

Atualizando Slackware 12.0 para -current (pré 12.1)

Placa de rede Attansic L2 100 Mbit no Slackware 12

Criando uma ISO de DVD "bootável" do Slackware

Leitura recomendada

Expressão regular com o Wget

Shell script para criar VMs no KVM

Comandos liberados por grupos no GNU/Linux

Como criar um pacote.tgz com o executável do Lazarus [vídeo]

Instalar pacotes recomendados e sugeridos no terminal com o APT-GET

  

Comentários
[1] Comentário enviado por Daemonio em 04/02/2010 - 04:34h

Vlw cara, estava procurando exatamente por isso =D
t+

[2] Comentário enviado por rony_souza em 04/02/2010 - 12:22h

Outra forma clique o botão direito sobre o arquivo

(como faria com o Windows) e Extrair aqui

no gerenciador de arquivos Nautilus.



abs.

[3] Comentário enviado por fco em 04/02/2010 - 14:11h

@Scyther_Kaspor

É... o mundo do Linux se resume a Desktop e interface gráfica. Nem é usado em servidores e modo texto. ;)

[4] Comentário enviado por Fellype em 04/02/2010 - 16:15h

Muito boa dica!

Apenas adicionando informação:
Ao invés de usar:
$ tar tvf NossoArquivo.tar.gz | less
para visualizar o conteúdo do arquivo, pode se usar diretamente:
$ less NossoArquivo.tar.gz
O resultado é o mesmo.

[5] Comentário enviado por albfneto em 05/02/2010 - 20:42h

Xico... rsrsrs é claro que é usado nos servidores....rsrsrs
Sempre demonstrando seu ótimo conhecimento de comandos!
Boa dica, foi pros meus favoritos.
Tava sumido! Bom retorno! Bom findis!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts