21Aug
O formato de arquivamento tar é, em anos de computação, um verdadeiro Methuselah, ainda hoje em uso intenso. O que torna o formato do tar tão útil muito depois do início?
Pergunta de hoje e amp;A sessão de atendimento chega a cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento comunitário de sites Q & A.
A pergunta
Leitor de superutilizador MarcusJ tem curiosidade sobre o formato tar e por que ainda estamos usando isso depois de todos esses anos:
Eu sei que o tar foi feito para arquivos de fita no dia, mas hoje temos formatos de arquivo que ambosagregue arquivos e execute a compressão dentro do mesmo formato de arquivo lógico.
Perguntas:
- Existe uma penalidade de desempenho durante a acumulação de estágios de descompressão /compression/ para o uso de tar encapsulado em gzip ou bzip2, quando comparado ao uso de um formato de arquivo que faz agregação e compressão na mesma estrutura de dados? Suponha que o tempo de execução do compressor que está sendo comparado é idêntico( por exemplo, gzip e Deflate são semelhantes).
- Existem recursos do formato de arquivo tar que outros formatos de arquivo, como. 7z e. zip não têm?
- Uma vez que o tar é um formato de arquivo antigo, e os formatos de arquivo mais recentes existem hoje, por que é tar( seja encapsulado em gzip, bzip2 ou mesmo o novo xz) ainda tão amplamente utilizado hoje em GNU / Linux, Android, BSD e outrosSistemas operacionais UNIX, para transferências de arquivos, fontes de programas e downloads binários, e às vezes até como um formato de gerenciador de pacotes?
Essa é uma pergunta perfeitamente razoável;Tanto mudou no mundo da computação nos últimos trinta anos, mas ainda estamos usando o formato tar. Qual é a história?
A Resposta O contribuidor
SuperUser Allquixotic oferece alguma visão sobre a longevidade e a funcionalidade do formato tar:
Parte 1: Performance
Aqui está uma comparação de dois fluxos de trabalho separados e o que eles fazem.
Você tem um arquivo no disco blah.tar.gz, que é, digamos, 1 GB de dados compactados com gzip que, quando não compactados, ocupam 2 GB( portanto, uma taxa de compressão de 50%).
A maneira como você criaria isso, se você fizesse arquivamento e compactação separadamente, seria:
tar cf blah.tar arquivos. ..Isso resultaria em blah.tar, que é uma mera agregação dos arquivos. .. na forma descompactada.
Então você faria
gzip blah.tarIsso leria o conteúdo do blah.tar a partir do disco, comprimi-los através do algoritmo de compressão gzip, escreva o conteúdo para blah.tar.gz e, em seguida, desvincule( exclua) o arquivo blah.alcatrão.
Agora, vamos descomprimir!
Way 1
Você tem blah.tar.gz, de uma forma ou de outra.
Você decide executar:
gunzip blah.tar.gzIsto será
- LEIA o conteúdo de dados comprimidos de 1GB de blah.tar.gz.
- PROCESSE os dados compactados através do descompressor gzip na memória.
- Como o buffer de memória preenche um valor de "um bloco" de dados, ESCREVE os dados descompactos no arquivoblah.tar no disco e repita até que todos os dados compactados sejam lidos.
- Desvincular( apagar) o arquivo blah.tar.gz.
Agora, você tem blah.tar no disco, que está descompactado, mas contém um ou mais arquivos dentro dele, com uma sobrecarga de estrutura de dados muito baixa. O tamanho do arquivo provavelmente é um par de bytes maior do que a soma de todos os dados do arquivo seria.
Você é executado:
tar xvf blah.tarIsso será
- LEIA os 2GB de conteúdo de dados não compactados do blah.tar e as estruturas de dados do formato de arquivo tar, incluindo informações sobre permissões de arquivos, nomes de arquivos, diretórios, etc.
- ESCREVER para o discoo 2GB de dados mais os metadados. Isso envolve: traduzir a estrutura de dados / informações de metadados para criar 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 que LEIS do disco neste processo foram 1GB( para gunzip) + 2GB( para tar) = 3GB.
O total de dados que WROTE em disco neste processo foi de 2GB( para gunzip) + 2GB( para tar) + alguns bytes para metadados = cerca de 4GB.
Way 2
Você tem blah.tar.gz, de uma forma ou de outra.
Você decide executar:
tar xvzf blah.tar.gzIsso será
- LEIA os conteúdos de dados comprimidos de 1GB do blah.tar.gz, um bloco de cada vez, na memória.
- PROCESSE os dados compactados através do descompressor gzip na memória.
- À medida que o buffer de memória se enche, o irá transformar o em dados, na memória, para o analisador de formato do arquivo tar, que lerá as informações sobre metadados, etc. e os dados de arquivo não compactados.
- À medida que o buffer de memória preenche o analisador do arquivo tar, ele ESCREVERá os dados descompactados no disco, criando arquivos e diretórios e preenchendo os conteúdos descompactados.
O total de dados que LEIA do disco nesse processo foi de 1GB de dados compactados, período.
Os dados totais que WROTE em disco neste processo foram 2GB de dados não compactados + alguns bytes para metadados = cerca de 2GB.
Se você notar, a quantidade de E / S de disco no Way 2 é idêntico às E / S de disco executadas por, digamos, os programas Zip ou7-Zip, ajustando para quaisquer diferenças na taxa de compressão.
E se a relação de compressão é sua preocupação, use o compressor Xz para encapsular o alcatrão e você tenha o arquivo TAR LZMA2'ed, que é tão eficiente quanto o algoritmo mais avançado disponível para 7-Zip: -)
Parte 2: Características
O tar armazena permissões UNIX dentro de seus metadados de arquivos e é muito conhecido e testado para empacotar com sucesso um diretório com todos os tipos de permissões diferentes, links simbólicos, etc. Há mais do que algumas instâncias em que talvez seja necessário globalizar um monte de arquivosem um único arquivo ou fluxo, mas não necessariamente compactá-lo( embora a compressão seja útil e freqüentemente usada).
Parte 3: Compatibilidade
Muitas ferramentas são distribuídas em fonte ou em forma binária como. tar.gz ou. tar.bz2 porque é um formato de arquivo de "menor denominador comum": muito como a maioria dos usuários do Windows tem acesso a. zip ou. rardecompressores, a maioria das instalações Linux, mesmo as mais básicas, terão acesso a pelo menos o alcatrão e o gunzip, independentemente de sua idade ou reduzida. Mesmo as firmwares do Android têm acesso a essas ferramentas.
Novos projetos voltados para o público que administram distribuições modernas podem muito bem distribuir 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 é similarpara 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 usado mais frequentemente pelo mesmo motivo que a música não é vendida em lojas de download on-line em novos formatos, como o Opus ou o vídeo no WebM.Compatibilidade com pessoas que utilizam sistemas antigos ou muito básicos.
Tem alguma coisa a adicionar à explicação? Som na parte dos comentários. Deseja ler mais respostas de outros usuários Tech-savvy Stack Exchange? Confira o tópico de discussão completo aqui.