Como posso avaliar a melhor opção de formato de arquivo para compactar arquivos?

24

Em geral, observei o seguinte:

  • Arquivos ou ferramentas do Linux-y usam bzip2 ou gzip para distribuir arquivos
  • arquivos ou ferramentas do Windows-y usam ZIP para distribuir arquivos
  • Muitas pessoas usam o 7-Zip para criar e distribuir seus próprios arquivos

Perguntas:

  • Quais são as vantagens e desvantagens desses formatos, que parecem ser formatos abertos? Quando / por que devo escolher um (digamos, 7-Zip) sobre outro (digamos, ZIP)?
  • Por que a tendência acima parece se manter, mesmo que todos esses sejam formatos portáteis? Há alguma vantagem específica em usar um formato de arquivo específico em uma plataforma específica?
por Mehrdad 03.07.2011 / 11:06

6 respostas

16

Há uma grande variedade de formatos e métodos de compactação disponíveis, alguns não são compactados e são projetados para armazenar vários arquivos em um arquivo e outros compressores experimentais mais recentes (PAQ são projetados para compactar da forma mais agressiva possível, independentemente do tempo necessário para executar a operação.

Você precisa avaliar os recursos necessários a partir de sua opção de método de compactação e também considerar o contexto no qual ele será usado.

Diferentes recursos e considerações incluem:

  • Capacidade de compactação - Diminui significativamente o arquivo?
  • Facilidade de uso - Se o arquivo for para outro usuário, será fácil extrair o arquivo ou será necessário instalar mais software?
  • Proteção por senha e / ou criptografia - Essas medidas de segurança são necessárias?
  • Suporte a vários volumes - Se a mídia de destino exigir que o arquivo seja dividido em partes adequadas, o formato é compatível com isso de maneira elegante. Por exemplo, 650 MB para um CD.
  • Reparação e recuperação - Se o arquivo ficar parcialmente corrompido, ele oferece um registro de recuperação para auxiliar na restauração de dados?
  • Suporte Unicode - O archiver suporta nomes de arquivos internacionais ou apenas ASCII padrão?
  • Requisitos do sistema - Compressores modernos, como o 7-Zip , oferecem a capacidade de aumentar a compactação eficiência usando um dicionário maior (um dicionário é uma referência de dados comumente repetidos em um arquivo compactado), mas isso, por sua vez, aumenta o consumo de memória no tempo de compactação e descompressão.
  • Suporte de auto-extração - O arquivo pode ser colocado em um arquivo executável que ofereça facilidade de uso para quem precisa usá-lo? (Lembre-se também que você só pode criar um autoextrator para uma única plataforma. De modo geral, um autoextrator do Windows não funcionará no Linux por padrão, a menos que seja executado por uma camada de compatibilidade como o Wine).
  • Atributos do sistema de arquivos - O compressor armazena metadados e permissões relevantes do sistema de arquivos que podem ser preservados no ponto de extração?

Em geral, o ZIP é o formato mais onipresente, mas com tamanho superior ao 4 GB geralmente não são suportados (se houver), o suporte de segurança é geralmente considerado ruim (a senha padrão pode ser comprometida com um ataque de texto simples, e a criptografia adicional é geralmente implementada como um derivativo não oficial do formato pelo comercial ZIP fornecedores de software).

Além disso, a maioria dos outros formatos populares terá alguma forma de suporte em todos os sistemas operacionais, instalando mais software.

Minha escolha pessoal é 7-Zip , pois tem uma ótima e flexível compactação; apesar de ter uma interface de usuário peculiar no Windows. Existem de-compressores para Linux e Mac OS X (embora não baseados em GUI como padrão).

    
por 03.07.2011 / 12:25
8

Uma coisa que vem à mente é um post de dois anos de Jeff Atwood: Compressão de arquivos na era multi-core . Nesse artigo, ele descobre que o bzip2 supera o 7-zip ao executar mais de dois núcleos.

    
por 03.07.2011 / 11:18
4

Para sua primeira pergunta, o 7-Zip é um arquivador que pode usar muitos algoritmos para compactar e descompactar dados.

Para sua segunda pergunta, certifique-se de que a plataforma suporta ferramentas que suportem o formato fornecido. Por exemplo, eu evitaria usar o RAR em um Mac. Embora seja possível usar, e existem utilitários gratuitos que o suportam, eles não têm a interface muito mais rica que os utilitários do Windows que suportam o RAR (na minha experiência).

    
por 03.07.2011 / 11:18
4

Como outros já mencionaram, a escolha de um formato de compactação específico depende muito do uso e do público-alvo.

    Os arquivos
  • .tar.gz e tar.bz2 são ideais para uso em sistemas Linux (e por extensão para compartilhamento de arquivos com usuários Linux) porque as ferramentas tar, gzip e bzip2 são amplamente onipresentes na plataforma, e porque o formato .tar tem suporte total para permissões do Unix e outras propriedades específicas da plataforma. A escolha entre gzip e bzip2 para comprimir o arquivo tar é principalmente uma decisão sobre velocidade versus taxa de compressão, com o bzip2 entregando arquivos menores, mas com uma velocidade de compressão muito mais lenta. As desvantagens desses formatos incluem menos compatibilidade com o Windows e a (potencial) necessidade de descompactar todo o arquivo para extrair um único arquivo.

  • Arquivos ZIP podem ser extraídos na maioria das plataformas usando ferramentas nativas, por isso é a escolha ideal para enviar um arquivo para um usuário não técnico que ficaria desconfortável com a instalação de software de arquivamento de terceiros, como o 7-Zip. . O nível de compactação não é tão bom quanto algoritmos mais avançados e não suporta permissões do Unix, mas é um formato excelente se você quiser enviar um arquivo de fotos de feriados para sua avó, por exemplo. O ZIP também fornece proteção básica por senha e pode extrair rapidamente um arquivo de qualquer lugar do arquivo.

  • O 7-Zip é bom se você quiser as melhores taxas de compactação possíveis. Como o ZIP, ele não suporta permissões ou propriedade de arquivos do Unix e também não é instalado por padrão na maioria das plataformas, o que faz com que seja um pouco mais trabalhoso, mas pode valer a pena no Windows se os ganhos da taxa de compactação forem importantes. Em um ambiente all-Linux, seria melhor usar as ferramentas de compactação 'xz' ou 'lzma' junto com tar, que operam exatamente da mesma maneira que 'gzip' e 'bzip2', mas usam o algoritmo LZMA mais avançado como 7 -Zip.

por 06.07.2011 / 22:26
2

Apenas como exemplo, uso os formatos mencionados nesses casos:

  • Arquivos de texto (registros especialmente): bz2
  • Coleção de arquivos a serem distribuídos (por exemplo, código fonte): gz (tar.gz realmente).
  • Arquivos variados: 7zip. Eu posso compactar quase tudo de uma maneira muito eficiente. Cross-platform, open-source, estável, leve, criptografia de arquivos (cabeçalho e dados), ... Você pode pedir mais alguma coisa? :)

Eu evito o RAR e sempre que recebo um arquivo RAR de alguém que conheço, eu digo a ele para parar de usar esse formato, pois ele é proprietário, e provavelmente ele está usando software não licenciado (a maioria das pessoas faz o download da versão de teste do WinRAR e continua usando-o para sempre).

PS: Eu corro o Ubuntu (principalmente) e o Windows (o dual boot e o VirtualBox).

    
por 03.07.2011 / 19:45
1

Há pelo menos quatro tarefas separadas que são frequentemente confundidas porque as ferramentas populares as integram:

  1. Arquivamento: a capacidade de combinar vários arquivos (incluindo metadados) em um único arquivo, preservando o máximo possível de coisas. No mundo Linux / Unix, o arquivamento é feito tradicionalmente no formato de arquivo TAR.
  2. Compactação: a capacidade de minimizar sem perdas o tamanho de um fluxo de dados binários. No mundo Linux / Unix, isso é feito tradicionalmente pelo GZip e pelo BZip2.
  3. Criptografia: a capacidade de misturar dados com chaves
  4. Soma de verificação: a capacidade de detectar (e possivelmente corrigir) erros.

A onipresença de .tar.gz e .tar.bz corresponde à filosofia Unix de pequenas ferramentas que fazem um único trabalho bem, sobre uma única ferramenta que faz tudo. O formato de arquivo TAR não suporta compactação ou criptografia, mas pode ser compactado ainda mais por qualquer compressor (incluindo como .tar.zip ou .tar.7z). O trabalho do GZip e do BZip2 é simplesmente compactar um fluxo de arquivos para outro fluxo de arquivos, a camada de compactação não precisa se importar em como preservar metadados ou criptografia ou checksum. Com o passar do tempo, no entanto, vários atalhos foram feitos no programa tar para trabalhar com um compressor de forma mais conveniente.

No formato de arquivo zip e 7z, esses trabalhos separados são feitos por um único programa em um único formato de arquivo super.

Why does the trend above appear to hold, even though all of these are portable formats? Are there any particular advantages to using a particular archive format on a particular platform?

Como tem sido assim, os códigos-fonte do programa são tradicionalmente distribuídos como .tar.gz ou .tar.bz2, porque preservar permissões de arquivos, tempo de modificação, etc. são importantes para várias ferramentas usadas para programação (por exemplo, make) .

A etapa separada de arquivamento e compressão funcionou muito bem por anos, tem uma clara vantagem de poder misturar e combinar livremente arquivamento e compactação, e sua desvantagem (um processo de compressão de 2 passos) pode ser facilmente contornada pelo desenvolvimento ferramentas mais inteligentes (o mais moderno programa de compressão de linux irá comprimir diretamente para .tar.gz ou .tar.bz2, escondendo o passo intermediário).

Não há motivos strongs para migrar para outros formatos de arquivo, os compressores mais novos não têm uma taxa de compactação significativamente melhor para justificar a quebra da tradição e o tar pode preservar tudo o suficiente.

    
por 06.07.2011 / 23:11