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

16

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

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

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

Trevor Gross
fonte

Respostas:

18

A .gz, .xz, .bz2, .7z, .lz, .zsufixos são usados para deixar claro que o arquivo é compactado com o dito algoritmo de compressão. Seu uso não se limita a .tararquivos, 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 o file.tgzque também indica um tarball compactado com gzip (como file.tar.gz).

A extensão do arquivo é uma convenção, não necessariamente descreve o conteúdo do arquivo. Para verificar que tipo de arquivo você está manipulando, use o filecomando 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 compactados com gzip ( .gz) são os mais comuns. É rápido na compactação e descompactação, embora existam outros algoritmos que produzem melhores taxas de compactação.

Lekensteyn
fonte
8

Além da resposta @Lekensteyn, eu gostaria de acrescentar que este comportamento é baseado em fazer uma coisa e fazê-lo bem a filosofia - tarprograma sabe como colocar vários arquivos em um único fluxo (com .tarextensão), gzipsabe como comprimir um arquivo único (adicionando .gzextensão) *. Ao combinar essas ferramentas, você pode criar um comando que comprime vários arquivos em um único .tag.gzarquivo.

Essa abordagem é muito flexível - você pode combinar alguns comandos padrão do Unix para fazer todo tipo de coisa. Por exemplo, se você escrever um programa melhor para compactar arquivos, não precisará modificá tar-lo para permitir a criação de .tar.mymegaziparquivos; em vez disso, basta direcionar tara saída para o seu compressor.

Da mesma forma, tarnada sabe sobre SSH, mas, combinando comandos, você pode criar um script que arquiva arquivos, carrega-os em uma máquina remota via SSH e des-arquiva-os lá.

Compare isso ao zipcomando, 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 compactar ou compactar os arquivos com gzip ou bzip, usando -ze -jalternando, eles foram adicionados por conveniência e o tar do GNU está realmente gerando gzipou bzip2como um novo processo.

Sergey
fonte
Exemplo: os comandos tar c dir/ | gzip > dir.tar.gze tar czf dir.tar.gz dir/comandos fazem a mesma coisa. Um exemplo, onde taré combinado com SSH e tar(novamente): tar cz Documents/ | ssh user@host 'tar xz(equivalente rsync seria: rsync -a Documents user@host:)
Lekensteyn