Os arquivos zip contêm um diretório central de seus conteúdos no final (o mais provável é evitar a necessidade de criar o diretório de antemão, onde você ainda não sabe o que estará dentro). Isso permite extrair rapidamente arquivos únicos sem ter que descompactar todo o arquivo: basta ler o diretório do arquivo e extrair apenas o que é necessário. No entanto, isso requer que todo o arquivo seja acessível e requer acesso aleatório , que está disponível apenas em dispositivos de bloco (disquetes, discos rígidos). Além disso, o diretório de arquivamento é vulnerável: se o arquivo ficar truncado por algum motivo, ele requer uma magia pesada para extrair qualquer coisa útil do arquivo.
Arquivos Zip foram criados para uso do BBS, onde era importante poder agrupar o conteúdo de um diretório em um único (e compactado) arquivo --- em vez de ter que baixar possivelmente milhares de arquivos únicos. Assim como a maioria dos sites da Web agrupa seus downloads até hoje, pelas mesmas razões.
Os arquivos tar foram criados para agrupar backups a serem usados em unidades de fita, portanto, para acesso sequencial . Não há diretório central; em vez disso, o arquivo contém blocos de cabeçalho em intervalos regulares que indicam quais arquivos seguirão nos próximos blocos. Os arquivos de alcatrão devem ser lidos de uma só vez; se apenas um único arquivo for extraído, o arquivo é lido seqüencialmente, começando do início até que o arquivo solicitado seja encontrado (o que pode muito bem estar no final). A compactação é aplicada em cima disso; Cada um dos vários programas de compactação aplicados aos arquivos tar ( compress
, gzip
, bzip2
etc.) são compressores de fluxo e não alteram a natureza seqüencial do arquivamento em nenhum assunto. Na pior das hipóteses, você precisaria de um pouco mais de blocos até poder começar a extração.
Isso pode soar como uma diferença trivial, mas na verdade representa um oposto polar na filosofia. Com arquivos zip, sempre há a necessidade de ter o arquivo inteiro à mão para fazer qualquer coisa útil com ele, enquanto um arquivo tar pode ser transmitido para um pipeline. Eu posso baixar um arquivo tar grande e começar a extraí-lo desde o início, assim que os primeiros blocos entrarem (e talvez interromper o download assim que eu pegar o arquivo que estou procurando). Para um arquivo Zip, tenho que esperar até que o diretório do arquivo seja exibido, o que vem no final do arquivo. Mas uma vez que eu faça tenha o arquivo inteiro em mãos, extrair conteúdo parcial dele será muito mais rápido de um arquivo tar.
Ambos os formatos têm um ponto muito strong, dependendo de onde e como eles são usados. Como os pipelines (e, portanto, a noção de streaming de dados de um processo para outro) só existem realmente no mundo Unix, a principal desvantagem dos arquivos tar é perdida em outros sistemas, razão pela qual os arquivos Zip são muito mais populares lá. Mas os arquivos tar são mais flexíveis, e é por isso que eu os prefiro sempre que tenho uma escolha.