Tar: Descompactando arquivos específicos

Publicado por Francisco Ambrozio em 04/02/2010

[ Hits: 38.319 ]

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

Atualizando Slackware 12.0 para -current (pré 12.1)

Instalando IBM Lotus Symphony com corretor ortográfico pt_BR no Slackware

Teclas multimídia no Dell Inspiron 1525

Scroll no touchpad do Dell Inspiron 1525 (Slackware)

Diminuindo o tempo de boot do Slackware

Leitura recomendada

Partição - Formatando e mantendo seu UUID

Comandos básicos para o modo texto

Compartilhar Linux X Linux (Virtualbox)

Monitorando seu HD - Listando detalhes sobre os arquivos abertos no sistema

Verificando os processos ativos no sistema

  

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