Qual é a diferença com todos os diferentes tipos de arquivos .tar?

15

Alguém poderia me dizer o que há com tantos arquivos e como eles são diferentes?

Há pelo menos cinco em que posso pensar, .tar.tz , .tar.gz , .tar.bz2 , .tar.lz , .tar.z

Qual é o melhor para quais aplicativos? Parece tolo fazer tantas variações do mesmo arquivo, mas tenho certeza de que há uma razão.

    
por Trevor Gross 27.11.2013 / 19:35

2 respostas

18

Os sufixos .gz , .xz , .bz2 , .7z , .lz , .z são usados para deixar claro que o arquivo é compactado com o referido algoritmo de compactação. Seu uso não está limitado a .tar arquivos, você também verá arquivos como initrd.gz (um ramdisk inicial compactado) ou manual.txt.gz (para um documento de texto compactado). Você também pode ver file.tgz , que também indica um tarball compactado com gzip (como file.tar.gz ).

A extensão do arquivo é uma convenção, não descreve necessariamente o conteúdo do arquivo. Para verificar o tipo de arquivo que você está manipulando, use o comando file . Exemplo:

$ file data.tar.gz
data.tar.gz: gzip compressed data, from Unix
$ gunzip -c data.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)

Na minha experiência, os arquivos comprimidos em gzip ( .gz ) são os mais comuns. Ele é rápido na compactação e na descompactação, embora haja outros algoritmos que geram melhores taxas de compactação.

    
por Lekensteyn 27.11.2013 / 19:43
8

Além da resposta do @Lekensteyn, eu gostaria de acrescentar que esse comportamento é baseado em Faça uma coisa e faça bem filosofia - tar programa sabe como colocar vários arquivos em um único fluxo (com .tar extensão), gzip sabe como compactar um único arquivo (adicionando .gz extensão) *. Ao combinar essas ferramentas, você pode criar um comando que comprime vários arquivos em um único arquivo .tag.gz .

Essa abordagem é muito flexível - você pode combinar alguns comandos Unix padrão para fazer todo tipo de coisa. Por exemplo, se você escrever um programa melhor para compactar arquivos, não será necessário modificar tar para permitir a criação de .tar.mymegazip arquivos - em vez disso, você apenas canaliza a saída de tar para seu compressor.

Da mesma forma, tar não sabe nada sobre SSH, mas combinando comandos você pode criar um script que arquive arquivos, carregue-os em uma máquina remota via SSH e desarquive-os lá.

Compare isso com o comando zip , que não se originou no Unix - ele possui ferramentas internas para compactar diretórios inteiros, criptografar arquivos, dividir o arquivo em arquivos zip menores, etc.

(nota de rodapé) - sim, tar é capaz de gzip ou bzip dos próprios arquivos usando -z e -j switches, eles foram adicionados por conveniência, e o GNU tar está gerando gzip ou bzip2 um novo processo.

    
por Sergey 03.12.2013 / 23:11