Guia do Linux/Iniciante+Intermediário/Compactadores/tar

Na verdade o tar não é um compactador e sim um "arquivador" (ele junta vários arquivos em um só), mas pode ser usado em conjunto com um compactar (como o gzip ou zip) para armazena-los compactados. O tar também é muito usado para cópias de arquivos especiais ou dispositivos do sistema. É comum encontrar arquivos com a extensão .tar, .tar.gz, .tgz, .tar.bz2, .tar.Z, .tgZ, o primeiro é um arquivo normal gerado pelo tar e todos os outros são arquivos gerados através tar junto com um programa de compactação (gzip (.gz), bzip2 (.bz2) e compress (.Z).

tar [opções] [arquivo-destino] [arquivos-origem]

Onde:

arquivo-destino
É o nome do arquivo de destino. Normalmente especificado com a extensão .tar caso seja usado somente o arquivamento ou .tar.gz/.tgz caso seja usada a compactação (usando a opção -z).
arquivos-origem
Especifica quais arquivos/diretórios serão compactados.
opções
-c, --create
Cria um novo arquivo .tar
-t, --list
Lista o conteúdo de um arquivo .tar
-u, --update
Atualiza arquivos compactados no arquivo .tar
-f, --file [HOST
]F
Usa o arquivo especificado para gravação ou o dispositivo /dev/rmt0.
-j, --bzip2
Usa o programa bzip2 para processar os arquivos do tar
-l, --one-file-system
Não processa arquivos em um sistema de arquivos diferentes de onde o tar foi executado.
-M, --multi-volume
Cria/lista/descompacta arquivos em múltiplos volumes. O uso de arquivos em múltiplos volumes permite que uma grande cópia de arquivos que não cabe em um disquete, por exemplo, seja feita em mais de um disquete.
-o
Grava o arquivo no formato VT7 ao invés do ANSI.
-O, --to-stdout
Descompacta arquivos para a saí­da padrão ao invés de gravar em um arquivo.
--remove-files
Apaga os arquivos de origem após serem processados pelo tar.
-R, --record-number
Mostra o número de registros dentro de um arquivo tar em cada mensagem.
--totals
Mostra o total de bytes gravados com a opção --create.
-v
Mostra os nomes dos arquivos enquanto são processados.
-V [NOME]
Inclui um [NOME] no arquivo tar.
-W, --verify
Tenta verificar o arquivo gerado pelo tar após grava-lo.
x
Extrai arquivos gerados pelo tar
-X [ARQUIVO]
Tenta apagar o [ARQUIVO] dentro de um arquivo compactado .tar.
-Z
Usa o programa compress durante o processamento dos arquivos.
-z
Usa o programa gzip durante o processamento dos arquivos.
--use-compress-program [PROGRAMA]
Usa o [PROGRAMA] durante o processamento dos arquivos. Ele deve aceitar a opção -d.
-[0-7][lmh]
Especifica a unidade e sua densidade.

A extensão precisa ser especificada no arquivo de destino para a identificação correta:

  • Arquivos gerados pelo tar precisam ter a extensão .tar
  • Caso seja usada a opção -j para compactação, a extensão deverá ser .tar.bz2
  • Caso seja usada a opção -z para compactação, a extensão deverá ser .tar.gz ou .tgz
  • Caso seja usada a opção -Z para a compactação, a extensão deverá ser .tar.Z ou .tgZ

É importante saber qual qual o tipo de compactador usado durante a geração do arquivo .tar pois será necessário especificar a opção apropriada para descompacta-lo (para detalhes veja [#s-cpctd-extensoes Extensões de arquivos compactados, Seção 18.2]).

Exemplos:

  • tar -cf index.txt.tar index.txt - Cria um arquivo chamado index.txt.tar que armazenará o arquivo index.txt. Você pode notar digitando ls -la que o arquivo index.txt foi somente arquivado (sem compactação), isto é útil para juntar diversos arquivos em um só.
  • tar -xf index.txt.tar - Desarquiva o arquivo index.txt criado pelo comando acima.
  • tar -czf index.txt.tar.gz index.txt - O mesmo que o exemplo de arquivamento anterior, só que agora é usado a opção -z (compactação através do programa gzip). Você agora pode notar digitando ls -la que o arquivo index.txt foi compactado e depois arquivado no arquivo index.txt.tar.gz (você também pode chama-lo de index.txt.tgz que também identifica um arquivo .tar compactado pelo gzip)
  • tar -xzf index.txt.tar.gz - Descompacta e desarquiva o arquivo index.txt.tar.gz criado com o comando acima.
  • gzip -dc index.tar.gz | tar -xf - - Faz o mesmo que o comando acima só que de uma forma diferente: Primeiro descompacta o arquivo index.txt.tar.gz e envia a saí­da do arquivo descompactado para o tar que desarquivará o arquivo index.txt.
  • tar -cjf index.txt.tar.bz2 index.txt - Arquiva o arquivo index.txt em index.txt.tar.bz2 compactando através do bzip2 (opção -j).
  • tar -xjf index.txt.tar.bz2 - Descompacta e desarquiva o arquivo index.txt.tar.bz2 criado com o comando acima.
  • bzip2 -dc index.txt.tar.bz2 | tar -xf - - Faz o mesmo que o comando acima só que de uma forma diferente: Primeiro descompacta o arquivo index.txt.tar.bz2 e envia a saí­da do arquivo descompactado para o tar que desarquivará o arquivo index.txt.
  • tar -t index.txt.tar - Lista o conteúdo de um arquivo .tar.
  • tar -tz index.txt.tar.gz - Lista o conteúdo de um arquivo .tar.gz.