Você já precisou descompactar arquivos tar.gz? Assim como os arquivos .zip são muito comuns no mundo Windows, no Linux (e Mac) é muito comum que os arquivos sejam compactados utilizando os métodos gzip e bzip2, mais eficientes e poderosos do que o zip.
Antes que você se perca na sopa de letrinhas, venha comigo para aprender a utilizar o comando tar nos seus scripts ou através das interfaces gráficas.
O que são os arquivos tar?
Os arquivos .tar são um conjunto compactado de vários arquivos individuais descompactados, enquanto os arquivos .zip, por exemplo, são formados por um ou vários arquivos compactados um a um, formando uma coleção de arquivos compactados. Apesar de ser mais comum em sistemas do tipo Unix, também pode ser utilizado no Windows com a ferramenta 7-zip.
A ferramenta tar processa arquivos com vários métodos de compactação, por exemplo:
- .tgz (método gzip)
- .tar.bz2 (método bzip2)
- .tar.xz (método xz)
- .tar.zst (método zstd)
O bzip2 é mais poderoso do que o gzip e, como resultado, os arquivos .bz2 são menores quando comparados com o gzip.
Vantagens de utilizar o programa tar:
- O programa tar utiliza os algorítimos de compactação disponíveis e o resultado é um arquivo muito mais compactado do que o obtido com outras ferramentas;
- Mantém intactas as permissões, datas e outros parâmetros dos arquivos durante o processo de compactação;
- A ferramenta tar está disponível por padrão na maioria das distribuições Linux;
- Velocidade de compactação e descompactação consideravelmente mais rápidas que as outras ferramentas;
- Muito flexível para ser utilizado em scripts, criar backups ou fazer upload de arquivos grandes;
- Permite reduzir o uso de espaço no sistema.
Procedimentos via linha de comando
Comecemos aprendendo como utilizar a linha de comando para descompactar arquivos tar.gz, algo que é relativamente simples e permite que você utilize comandos nos seus scripts. Após fazer um download de um arquivo tar.gz por meio de um script (utilizando, por exemplo, as ferramentas wget ou curl), você pode descompactar arquivos tar.gz e extrair o conteúdo do arquivo baixado.
As principais opções disponíveis para compactar e descompactar arquivos tar.gz na linha de comando são:
–delete | Exclui arquivos do arquivo-tar |
–wildcards | Usa coringas (padrão para exclusão) |
-a, –auto-compress | Usa terminação do arquivo-tar para determinar o programa compressor |
-c, –create | Cria um novo arquivo-tar |
-C | Especifica a pasta dos arquivos a serem armazenados ou a pasta para onde devem ser extraídos |
-d, –diff, –compare | Encontra diferenças entre um arquivo-tar e o sistema de arquivos |
-f, –file=arquivo-tar | Especifica o arquivo-tar a ser usado |
-j | Comprime ou extrai o arquivo-tar resultante com o método bzip2 em arquivos .bz2 |
-p | Mantém as permissões originais do(s) arquivo(s) |
-r, –append | Anexa arquivos ao final de um arquivo-tar |
-t, –list | Exibe o conteúdo de um arquivo-tar |
-u, –update | Anexa apenas arquivos mais novos do que a cópia no arquivo-tar |
-v, –verbose | Lista em detalhes os arquivos que estão sendo processados |
-w | Pede confirmação antes de cada ação |
-x, –extract, –get | Extrai arquivos de um arquivo-tar |
-z | Comprime ou extrai arquivo-tar resultante com o método gzip |
Agora vejamos alguns exemplos, na prática.
Como extrair arquivos
Extrair arquivos de um arquivo compactado (input.tar, ou input.gz, ou input.bz2, ou input.xz):
tar -xvf input.tar[.gz|.bz2|.xz]
Extrair arquivos de um arquivo compactado para uma pasta específica (diretório):
tar -xvf input.tar[.gz|.bz2|.xz] -C diretório
Para extrair arquivo(s) específico(s), liste os caminhos e os nomes separados por espaços após o nome do arquivo compactado (você pode utilizar previamente o parâmetro -t ou –list para obter essas informações):
tar -xf input.tar[.gz|.bz2|.xz] /caminho/para/o/arquivo1 /caminho/para/o/arquivo2
Extrair arquivos que seguem um padrão, por exemplo, arquivos .html:
tar -xvf input.tar --wildcards "*.html"
Extrair os arquivos para uma pasta específica (/caminho/para/a/pasta):
tar -xf input.tar.gz -C /caminho/para/a/pasta
Como compactar arquivos
Para fazer a operação inversa, isto é, compactar vários arquivos e poder, por exemplo, enviar por e-mail, use os seguintes comandos.
Compactar arquivos (arquivo1, arquivo2 e arquivo3) num arquivo tar (output.tar):
tar -cvf output.tar arquivo1 arquivo2 arquivo3
Compactar arquivos (arquivo1, arquivo2 e arquivo3) num arquivo gzip (output.tar.gz):
tar -czvf output.tar.gz arquivo1 arquivo2 arquivo3
Compactar arquivos (arquivo1, arquivo2 e arquivo3) definindo automaticamente o tipo de compressão pela extensão num arquivo tar (output.tar.xz):
tar -cavf output.tar.xz arquivo1 arquivo2 arquivo3
Supercompactar arquivos (arquivo1, arquivo2 e arquivo3) usando a compressão bzip2:
tar -cvjf output.tar.bz2 arquivo1 arquivo2 arquivo3
Nota: você pode adicionar arquivos ou pastas a arquivos tar pré-existentes, mas não é possível adicionar arquivos ou pastas em arquivos .tar.gz ou .tar.bz2.
Para listar os arquivos contidos dentro de um arquivo tar, utilize o seguinte comando:
tar -tvf input.tar
Tanto a ajuda quanto o manual trazem todos os comandos da poderosa ferramenta tar:
tar --help
ou
man tar
Como regra geral, os nomes dos arquivos precisam ser escritos entre aspas, caso contenham espaços.
Procedimentos via interface gráfica
Se você prefere utilizar uma interface gráfica para gerenciar os seus arquivos compactados no Linux, pode escolher a ferramenta de código aberto PeaZip ou as nativas da sua distribuição, clicando com o botão direito do mouse sobre um arquivo compactado no gerenciador de arquivos.
O PeaZip não está em português, mas, assim como no KDE (Ark) e no Gnome (Gerenciador de Compactação), a navegação é muito simples e intuitiva.
O tar é um poderoso programa para compactar e descompactar arquivos tar.gz, mas também para criar arquivos de instalação, por exemplo, nas distribuições baseadas no Arch Linux (arquivos .pkg.tar.zst).
Quer aprender mais? Então assine agora a nossa newsletter semanal e fique por dentro das novidades e dicas do mundo da tecnologia e dos códigos abertos.