Zip deflate percentage

3

usando zip archive fileeu tenho:

adding: file (deflated 40%)

-rw-rw-r-- 1 lenduya lenduya 757 Jan 18 16:26 archive.zip
-rw-rw-r-- 1 lenduya lenduya 973 Jan 18 16:25 file

A questão é que não tenho certeza de como conseguiu os 40%. 973/757 é 1,28 e 757/973 é 0,77. 757 / (973-757) é 3,5 e 973 / (973/757) é 4,5.

Bônus: O objetivo é que o argumento de um script seja um arquivo. Eu tenho que imprimir para produzir a taxa de compressão de zip. Meu processo de raciocínio era que eu usaria o resumo de zip, emiti-lo para um arquivo e de lá eu filtraria as informações desejadas usando cutou tr. bclidaria com a formatação de float. Eu estou em um bom caminho ou há uma maneira muito mais simples?

Hichigaya Hachiman
fonte

Respostas:

2

Primeira pergunta: os 40%. Isso é quanto "espaço" foi removido do arquivo de origem quando foi compactado. O tamanho do arquivo .zip inclui sobrecarga, como valores de CRC, índice de arquivo interno, etc. Quanto menor o arquivo de origem, maior a proporção relativa de espaço usada para sobrecarga.

Para encontrar o tamanho compactado do arquivo, sem sobrecarga, use unzipe liste o conteúdo

unzip -v archive.zip

Seu exemplo provavelmente usou ~ 173 bytes ou ~ 23% do arquivo para sobrecarga. Fazendo um arquivo aqui de 18K usado sobre o mesmo overhead 162 bytes ou ~ 0.2% do tamanho do arquivo zip.

A matemática para o seu caso é: tamanho comprimido ~ 584 bytes, espaço salvo 973-584 = 389 bytes, taxa de compressão 584/973 = 60%, ou relação de deflação 389/973 = 40%, sobrecarga 757-584 = 173 e 173 / 757 = 23%.

Seção de bônus: saída.

Você pode ler essa saída e analisá-la, se desejar. O percentual deflacionado será o mais próximo possível, sem casas decimais. Se você processa um arquivo, isso não é ruim. Se você processa vários em um arquivo, isso pode ser interessante, embora ainda seja possível. Melhor seria usar o unzipcomando acima. Se você executá-lo em seu arquivo, verá que ele lista o tamanho do arquivo e o tamanho compactado duas vezes. A segunda vez é um resumo do arquivo, que é um arquivo neste caso. Se você tiver vários arquivos, o resumo é o total combinado de espaço salvo, como uma porcentagem dos tamanhos de arquivo originais.

Como você é um aluno, deixarei o trabalho de análise para sua imaginação como um exercício para aprimorar sua habilidade.

Sorte.

Spellweaver cigano
fonte