Blog Agility

Comando tar do Linux

Comando tar do Linux

O comando tar (tape archive) é um utilitário linux que permite armazenar arquivos num arquivo.

As extensões de arquivo comumente vistos são .tar; .gz e .tar; .bz2 que são arquivos ainda mais compactados usando algoritmos gzip ou bzip respectivamente.
Neste tutorial vamos ver alguns exemplos de tarefas diárias de criar e extrair arquivos em desktops ou servidores linux.

O comando tar está disponível por padrão na maioria dos sistemas Linux e você não precisa instalá-lo separadamente.

Com tar existem dois formatos de compressão, gzip e bzip. A opção “z” especifica gzip e opção “j” especifica bzip. Também é possível criar arquivos descompactados.

1. Extrair um arquivo tar.gz

O uso mais comum é extrair arquivos tar. O seguinte comando deve extrair os arquivos para um arquivo tar.gz:

$ tar -xvzf arquivo_tar.tar.gz

Parâmetros usados:

x – Extrai arquivos
v – detalhado, imprimir os nomes de arquivos como eles são extraídos um por um
z – O arquivo é um arquivo “compactado”
f – Utilize o seguinte arquivo tar para a operação

2. Extrair um arquivo tar.bz2

Arquivos com extensão bz2 são compactados com o algoritmo bzip e o comando tar pode lidar com eles também. Use a opção j em vez da opção z.

$ tar -xvjf arquivo_tar.tar.gz

3. Extrair arquivos para um diretório ou caminho específico:

Para extrair os arquivos para um diretório específico, especifique o caminho utilizando a opção “C”. Note que o C é maiusculo.

$ tar -xvzf arquivo_tar.tar.gz -C /opt/agility/

No entanto primeiro certifique-se de que o diretório de destino existe, o tar não cria o diretório e irá falhar se ele não existir.

4. Extrair um único arquivo

Para extrair um único arquivo de um arquivo basta adicionar o nome do arquivo após o comando.

$ tar -xz -f arquivo_tar.tar.gz "./arquivo_tar/abc.txt"

Pode ser especificado mais de uma rquivo como o comando abaixo.

$ tar -xv -f abc.tar.gz "./arquivo_tar/123.txt" "./arquivo_tar/abc.txt"

5. Extrair vários arquivos usando curingas

Curingas podem ser usados para extrair varios arquivos que correspondem aos wildcards. Por exemplo, todos os arquivos com extensão “.txt”.

$ tar -xv -f arquivo_tar.tar.gz --wildcards "*.txt"

6. Lista e pesquisa conteúdo no arquivo tar

Se você quiser apenas listar o conteúdo do arquivo tar e não extraí-los, use a opção “-t”. O seguinte comando imprime o conteúdo de um arquivo compactado.

$tar -tz -f abc.tar.gz
./new/
./new/cde.txt
./new/subdir/
./new/subdir/in.txt
./new/abc.txt

Pode utilizar o grep para realizar uma busca. Usando a opção verbose “v” apresentará detalhes adicionais sobre cada arquivo.

Para tar.bz2 / arquivos bzip, use a opção “j”
Use o comando acima em combinação com o comando grep para procurar o arquivo. Simples!

$ tar -tvz -f abc.tar.gz | grep abc.txt
-rw-rw-r-- agility/agility 0 2015-01-13 11:40 ./new/abc.txt

7. Crie um arquivo tar / tar.gz

Agora que aprendemos como extrair arquivos tar existentes, é hora de começar a criar novos. O comando tar pode ser utilizado para colocar um arquivo ou um diretório inteiro nos arquivos selecionados. O seguinte comando cria um arquivo tar utilizando um diretório, adicionando todos os arquivos nele e sub-diretórios também.

$ tar -cvf abc.tar ./new/
./new/
./new/cde.txt
./new/abc.txt

O exemplo acima não cria um arquivo compactado. Apenas um arquivo simples, que coloca vários arquivos juntos sem qualquer compressão real.

A fim de comprimir, use a opção “j” para gzip ou bzip respectivamente “z” ou.

$ tar -cvzf abc.tar.gz ./new/

A extensão do nome do arquivo não importa realmente. “Tar.gz” e tgz são extensões comuns para arquivos compactados com gzip. “.tar.bz2” e “.tbz” são comumente usados ​​para extensões de arquivos bzip.

8. Pedir confirmação antes de adicionar arquivos

Uma opção útil é “w” que faz com que o comando tar peça a confirmação para cada arquivo antes de adicioná-la ao arquivo. Isso pode ser útil em alguns momentos.

Apenas os arquivos que recebem uma resposta seriam acrescentados. Se você não digitar nada, a resposta padrão seria um “Não”.

Adicionar arquivos específicos

$ tar -czw -f abc.tar.gz ./new/*
add './new/abc.txt'?y
add './new/cde.txt'?y
add './new/newfile.txt'?n
add './new/subdir'?y
add './new/subdir/in.txt'?n

Listar os arquivos adicionados


$ Tar -t -f abc.tar.gz
./new/abc.txt
./new/cde.txt
./new/subdir/

9. Adicione os arquivos para arquivos existentes

A opção r pode ser usada para adicionar arquivos aos arquivos existentes, sem a necessidade de criar novos. Aqui está um exemplo rápido:

$ tar -rv -f abc.tar Abc.txt

Os arquivos não podem ser adicionados aos arquivos compactados (gzip ou bzip). Arquivos só podem ser adicionados aos arquivos de alcatrão simples.

10. Adicione arquivos para arquivos compactados (tar.gz / tar.bz2)

Não é possível adicionar arquivos para arquivos compactados, no entanto ainda pode ser feito com um simples truque. Use o comando gunzip para descompactar o arquivo, adicionar o arquivo para arquivar e comprimi-lo novamente.

$ gunzip archive.tar.gz
$ tar-rf arquivo.tar ./path/to/file
$ gzip arquivo.tar

Para arquivos bZIP usar o bzip2 e comandos bunzip2 respectivamente.

11. Backup com tar


Um cenário real são diretórios de backup em intervalos regulares. O comando tar pode ser agendado para ter esses backups usando o utilitario cron. Segue um exemplo:

$ tar -cvz -f arquivo_$(data +% Y% m% d) .tar.gz ./agility/

Execute o comando acima via cron e mantenha a criação de arquivos de backup com nomes como – ‘arquivo_20150218.tar.gz’.

Claro que se certificar de que o espaço em disco não é populado com arquivos cada vez maiores.

12. Verifique os arquivos de arquivo quanto a criação

A opção “W” pode ser usado para verificar os arquivos depois de criar arquivos. Aqui está um exemplo rápido.

$ tar -cvW -f arquivo.tar ./agility/./new/
./new/cde.txt
./new/subdir/
./new/subdir/in.txt
./new/newfile.txt
./new/abc.txt
Verify ./new/
Verify ./new/cde.txt
Verify ./new/subdir/
Verify ./new/subdir/in.txt
Verify ./new/newfile.txt
Verify ./new/abc.txt

Note-se que a verificação não pode ser feita em arquivos compactados. Ele só funciona com arquivos tar descompactados.

O comando tar é uma ferramenta eficiente compactar arquivos, diretórios e até discos inteiros, muitas vezes com o objetivo de fazer backups. Atualmente, é possível encontrar interfaces gráficas que permitem manipular as opções dos programas tar, gzip, bzip2 e suas possíveis combinações de maneira simples, apenas com o uso do mouse. No entanto, entender como fazer uso desses comandos é essencial para quando somente a linha de comando estiver disponível e, claro, é importante também para que você possa compreender perfeitamente o que está sendo feito. Caso você queira mais detalhes sobre esses programas, digite em um terminal os comandos man tar, man gzip ou man bzip2.