Qual é a vantagem de usar o formato de arquivo tar hoje?

Índice:

Qual é a vantagem de usar o formato de arquivo tar hoje?
Qual é a vantagem de usar o formato de arquivo tar hoje?

Vídeo: Qual é a vantagem de usar o formato de arquivo tar hoje?

Vídeo: Qual é a vantagem de usar o formato de arquivo tar hoje?
Vídeo: PowerShell For Beginners Full Course | PowerShell Beginner tutorial Full Course - YouTube 2024, Abril
Anonim
 O formato de arquivamento de alcatrão é, nos anos de computação, um verdadeiro Methuselah, mas ainda está em uso pesado hoje em dia. O que torna o formato tar tão útil depois de seu início?
O formato de arquivamento de alcatrão é, nos anos de computação, um verdadeiro Methuselah, mas ainda está em uso pesado hoje em dia. O que torna o formato tar tão útil depois de seu início?

A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser, uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade.

A questão

Leitor do SuperUser MarcusJ está curioso sobre o formato tar e por que ainda o usamos depois de todos esses anos:

I know that tar was made for tape archives back in the day, but today we have archive file formats that both aggregate files and perform compression within the same logical file format.

Questions:

  • Is there a performance penalty during the aggregation/compression/decompression stages for using tar encapsulated in gzip or bzip2, when compared to using a file format that does aggregation and compression in the same data structure? Assume the runtime of the compressor being compared is identical (e.g. gzip and Deflate are similar).
  • Are there features of the tar file format that other file formats, such as.7z and.zip do not have?
  • Since tar is such an old file format, and newer file formats exist today, why is tar (whether encapsulated in gzip, bzip2 or even the new xz) still so widely used today on GNU/Linux, Android, BSD, and other such UNIX operating systems, for file transfers, program source and binary downloads, and sometimes even as a package manager format?

Essa é uma pergunta perfeitamente razoável; muita coisa mudou no mundo da computação nos últimos trinta anos, mas ainda estamos usando o formato tar. Qual é a história?

A resposta

Colaborador da SuperUser Allquixotic oferece algumas dicas sobre a longevidade e funcionalidade do formato tar:

Part 1: Performance

Here is a comparison of two separate workflows and what they do.

You have a file on disk

blah.tar.gz

que é, digamos, 1 GB de dados compactados com gzip que, quando não compactados, ocupam 2 GB (portanto, uma taxa de compactação de 50%).

A maneira que você criaria isso, se você fizesse arquivamento e compactação separadamente, seria:

tar cf blah.tar files …

Isso resultaria em

blah.tar

que é uma mera agregação do

files …

em forma não comprimida.

Então você faria

gzip blah.tar

Isso leria o conteúdo de

blah.tar

do disco, comprima-os através do algoritmo de compactação gzip, escreva o conteúdo

blah.tar.gz

e, em seguida, desvincule (exclua) o arquivo

blah.tar

Agora vamos descomprimir!

Maneira 1

Você tem

blah.tar.gz

De uma forma ou de outra.

Você decide executar:

gunzip blah.tar.gz

Isso vai

  • LEIA o conteúdo de dados compactados de 1GB

    blah.tar.gz

  • PROCESSAR os dados comprimidos através do

    gzip

    descompressor na memória.

  • À medida que o buffer de memória é preenchido com "um bloco" de dados, WRITE os dados não compactados no arquivo

    blah.tar

    no disco e repita até que todos os dados comprimidos sejam lidos.

  • Desvincular (excluir) o arquivo

    blah.tar.gz

Agora você tem

blah.tar

no disco, que é descompactado, mas contém um ou mais arquivos dentro dele, com sobrecarga de estrutura de dados muito baixa. O tamanho do arquivo é provavelmentealguns bytes maior que a soma de todos os dados do arquivo.

Você corre:

tar xvf blah.tar

Isso vai

  • LEIA os 2GB de conteúdo de dados não compactados de

    blah.tar

    e a

    tar

    estruturas de dados do formato de arquivo, incluindo informações sobre permissões de arquivos, nomes de arquivos, diretórios etc.

  • ESCREVA no disco os 2 GB de dados mais os metadados. Isso envolve: converter a estrutura de dados / informações de metadados em novos arquivos e diretórios no disco, conforme apropriado, ou reescrever arquivos e diretórios existentes com novos conteúdos de dados.

Os dados totais nós LER do disco nesse processo foi de 1 GB (para gunzip) + 2 GB (para tar) = 3 GB.

Os dados totais nós ESCREVI para disco nesse processo foi de 2 GB (para gunzip) + 2 GB (para tar) + alguns bytes para metadados = cerca de 4 GB.

Caminho 2

Você tem

blah.tar.gz

De uma forma ou de outra.

Você decide executar:

tar xvzf blah.tar.gz

Isso vai

  • LEIA o conteúdo de dados compactados de 1GB

    blah.tar.gz

    um bloco de cada vez, na memória.

  • PROCESSAR os dados comprimidos através do

    gzip

    descompressor na memória.

  • À medida que o buffer de memória é preenchido, tubo esses dados, na memória, até o

    tar

    analisador de formato de arquivo, que lerá as informações sobre metadados, etc. e os dados de arquivos descompactados.

  • À medida que o buffer de memória é preenchido

    tar

    Analisador de arquivos, ele gravará os dados descompactados no disco, criando arquivos e diretórios e preenchendo-os com o conteúdo descompactado.

Os dados totais nós LER do disco neste processo foi 1GB de dados compactados, ponto final.

Os dados totais nós ESCREVI para disco nesse processo foi de 2 GB de dados não compactados + alguns bytes para metadados = cerca de 2 GB.

Se você notar, a quantidade de E / S do disco em Caminho 2 éidêntico para o disco I / O executado por, digamos, o

Zip

ou

7-Zip

programas, ajustando as diferenças na taxa de compressão.

E se a taxa de compressão for sua preocupação, use o

Xz

compressor para encapsular

tar

e você tem o arquivo TAR do LZMA2, que é tão eficiente quanto o algoritmo mais avançado disponível para

7-Zip

:-)

Parte 2: Recursos

tar

armazena permissões do UNIX dentro de seus metadados de arquivo e é muito bem conhecido e testado para compactar com sucesso um diretório com todos os tipos de permissões diferentes, links simbólicos etc. Há mais do que alguns casos em que é necessário globalizar um monte de arquivos um único arquivo ou fluxo, mas não necessariamente compactá-lo (embora a compactação seja útil e usada com frequência).

Parte 3: Compatibilidade

Muitas ferramentas são distribuídas em fonte ou forma binária como.tar.gz ou.tar.bz2 porque é um formato de arquivo de “menor denominador comum”: assim como a maioria dos usuários do Windows tem acesso a descompactadores.zip ou.rar, a maioria das instalações Linux, mesmo o mais básico, terá acesso a pelo menos tar e gunzip, não importa quão antigo ou reduzido. Até mesmo os firmwares Android têm acesso a essas ferramentas.

Novos projetos voltados para audiências que executam distribuições modernas podem muito bem ser distribuídos em um formato mais moderno, como.tar.xz (usando o formato de compactação Xz (LZMA), que comprime melhor que gzip ou bzip2) ou.7z, que é semelhante a os formatos de arquivo Zip ou Rar, pois comprime e especifica um layout para encapsular vários arquivos em um único arquivo.

Você não vê.7z mais frequentemente, pela mesma razão pela qual a música não é vendida em lojas de downloads on-line em novos formatos, como o Opus, ou em vídeos no WebM. Compatibilidade com pessoas que executam sistemas antigos ou muito básicos.

Tem algo a acrescentar à explicação? Soe fora nos comentários.Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.

Recomendado: