Qual é mais eficiente - compactação tar ou zip? Qual é a diferença entre tar e zip?

63

Estou trabalhando no ambiente Linux e quero saber sobre os comandos tar e zip.

Qual é mais eficiente - tar ou zip? Eu também preciso saber as diferenças entre os comandos tar e zip. Alguém pode me explicar isso?

    
por rekha_sri 09.08.2010 / 14:32

7 respostas

76

tar faz apenas um único arquivo com vários arquivos, ele não faz compactação a menos que combinado um programa de compactação como gzip ou bzip2 (que você pode chamar de tar usando o -z ou -j opções, respectivamente). zip combina o arquivamento e a compactação em um programa.

    
por 09.08.2010 / 14:34
58

tar

  • Pressupõe que você estará lendo de uma extremidade à outra - "Tape ARchive". (A idade do comando mostra ...)
  • Não faz compactação, mas você pode compactar todo o fluxo resultante canalizando-o, por exemplo, gzip e bzip2 (feito internamente com -z ou -j)
  • Armazena os atributos do arquivo unix : uid, gid, permissions (mais notavelmente executável). O padrão pode depender da sua distribuição e pode ser alternado com opções.

zip

  • Armazena os atributos do MSDOS . (Arquivo, Somente Leitura, Oculto, Sistema)
  • Comprime cada arquivo e os adiciona a um arquivo
  • Inclui uma tabela de arquivos no final do arquivo
  • e como resultado dos dois primeiros, permite ler apenas as partes exatas sobre o arquivo que você precisa.

O fato de o zip compactar os arquivos separadamente afetará as taxas de compactação, principalmente em muitos arquivos pequenos semelhantes.

(Pelo menos isso foi exatamente correto há uma década.)

    
por 09.08.2010 / 17:19
20

O Tar preserva muito mais metadados do que o Zip, veja minha comparação (está um pouco desatualizada):

(cliqueparaampliar)

Oalcatrãopassapor65%dostestes,ondeoZipsópassa17%.Eudisponibilizeiopacotedetestes disponível no github, sob a licença BSD , para que você possa experimentar por si mesmo se tiver o Mac. Para o linux não tenho certeza se existem metadados, então esses testes podem não ser relevantes.

    
por 10.08.2010 / 00:30
14

A eficiência pode ser medida de diferentes maneiras:

  1. Quanto tempo demora o processo?
  2. Qual o tamanho dos arquivos resultantes?

Existem outras questões também, como "Quão comuns são as ferramentas para manipular os arquivos resultantes?"

Portanto, por exemplo, bzip2 cria arquivos menores que gzip , mas pode demorar muito mais tempo. Além disso, na minha experiência gzip é universal em sistemas Unix-like, mas bzip2 ainda não é (embora seja muito comum e geralmente fácil de obter).

    
por 09.08.2010 / 14:43
9

Como Wim observou, o tar não se comprime. Se você adicionar compactar o tar (por exemplo, para obter um .tar.gz ou .tar.bz2), estará compactando todo o arquivo tar de uma só vez. Em contraste, o zip comprime cada arquivo individualmente.

A eficiência depende da carga de trabalho. Especificamente, o zip permite que você acesse arquivos individuais diretamente. Com o tar, você precisa primeiro procurar os arquivos indesejados (compactados) antes. O desempenho de compactação depende do que você está compactando. tar com bzip2 costuma ser melhor para um grande número de arquivos semelhantes (por exemplo, um diretório de origem). zip poderia ser melhor se cada arquivo tivesse um conteúdo muito diferente.

    
por 09.08.2010 / 14:44
6

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.

    
por 20.01.2014 / 01:15
5

Como o outro já disse, o tar cria um grande "bloco" de todos os arquivos que podem ser comprimidos com um processador de fluxo como o gzip ou o bzip2.

A desvantagem disso é que você tem que descompactar todo o arquivo para acessar um arquivo dentro do arquivo.

A vantagem disso é que a taxa de compactação é geralmente maior, especialmente quando os arquivos compactados são muito semelhantes.

Outro empacotador como "rar" tem um "modo de bloqueio" (ou similar) para ter o mesmo efeito.

    
por 09.08.2010 / 17:00

Tags