A compactação em um arquivo grande resulta em melhor compactação do que a compactação individual de pastas?

A compactação em um arquivo grande resulta em melhor compactação do que a compactação individual de pastas?

Tenho várias pastas com cerca de 8 GB ou mais. Juntas, essas pastas totalizam cerca de 60 GB de dados. Posso compactar essas pastas de duas maneiras: individualmente, criando um arquivo compactado para cada uma delas, ou juntas em um único arquivo compactado grande.

De um modo geral,assumindo que todos os dados a serem compactados sejam do mesmo tipo e o algoritmo de compactação usado seja o mesmo (e que eu também não me importo com o tempo que levaria para descompactar o arquivo maior), qualquer um dos métodos resultará em uma compactação melhor do que outro, ou os tamanhos totais dos arquivos compactados nos dois cenários tenderão a ser iguais?

Responder1

A compactação em um arquivo grande resulta em melhor compactação do que a compactação individual de pastas?Não necessariamente.

Somente se o arquivo estiver usandocompressão sólida. Um arquivo não sólido (como um arquivo Zip) compacta os arquivos individualmente. Isso permite descompactar facilmente arquivos únicos do arquivo. Também permite adicionar arquivos ao arquivo sem precisar recompactar tudo.

Com arquivos sólidos, tudo isso é muito mais difícil: para descompactar um arquivo bem no final do fluxo, tudo precisa ser descompactado (embora não necessariamente gravado no disco). Ao adicionar um arquivo, o algoritmo também precisa passar por tudo.

Porém, existe um meio-termo: usar “blocos sólidos”. Agora o arquivador não precisa processar o arquivo inteiro o tempo todo, mas apenas parte do arquivo.

Na GUI do 7-Zip, é esta opção:

Caixa de diálogo Adicionar 7-Zip

Sem levar em conta os dados que estão sendo compactados, é muito simples:

  • Não sólido: acesso interativo rápido, pior compactação
  • Blocos sólidos: acesso interativo um tanto eficiente, melhor compactação
  • Sólido: Sem acesso interativo, melhor compactação

Dependendo do padrão de acesso previsto, você deve selecionar uma variante adequada.

Responder2

Embora seja impossível dizer com certeza absoluta, um arquivo maior teoricamente deveria resultar em um tamanho de arquivo menor, já que mais blocos de dados podem ser considerados repetitivos. Isso pressupõe que os dados sejam tão homogeneizados quanto você diz.

No entanto, é perfeitamente possível que certas pastas contenham arquivos com blocos de dados mais semelhantes e, portanto, possam ser compactados melhor como seu próprio arquivo individual.

A única maneira verdadeira de saber qual método é melhor seria testar os dois lados.

Responder3

O arquivo único quase sempre será menor, embora não pelo motivo que você pensa.

Simplificando, por ter apenas um arquivo morto, você não desperdiça espaço com vários cabeçalhos de arquivo morto. Há uma quantidade mínima de espaço que um arquivo compactado ocupa apenas para ser um arquivo válido, e você acaba ocupando esse mesmo espaço com cada arquivo criado. A única exceção amplamente utilizada é o cpioformato, que não possui cabeçalho para o arquivo em si, mas apenas cabeçalhos por arquivo.

Mais realisticamente, vocêgeralmenteobtenha uma taxa de compactação pelo menos tão boa usando apenas um arquivo em vez de mais de um, e com alguns arquivadores isso pode ser significativamente melhor (por exemplo, zpaqa desduplicaçãodentro deo arquivo, para que possa economizar muito espaço se houver muitos dados duplicados).

Há outra pergunta que você precisa fazer antes de decidir sobre isso: a sobrecarga de ter que lidar com um único arquivo grande em vez de vários arquivos menores vale a economia de espaço? Dependendo de onde você está armazenando os dados, pode ser mais econômico usar apenas os arquivos menores, especialmente se você precisar apenas de uma das pastas por vez.

No geral, porém, Keltari está correto, a única maneira de saber com certeza é testá-lo.

informação relacionada