Como mencionado no comentário , o SO pergunta tinha isso praticamente coberto. Agora, eu queria experimentar como essa deflação realmente funciona. Então, fiz o teste abaixo.
O que é entropia?
Entropy é uma medida da imprevisibilidade de um fluxo de informações. Um fluxo perfeitamente consistente de bits (todos os zeros, ou todos os outros) é totalmente previsível (não possui entropia). Um fluxo de bits completamente imprevisíveis tem entropia máxima. A ideia de entropia de informação é creditada a Claude Shannon, que deu uma fórmula para expressá-lo.
Agora, criei um arquivo apenas com y
ou n
, conforme abaixo.
perl -e 'my $y; $y .= int(rand(100))>90 ? "y" : "n" for (0..999); print $y;' > f1
Agora, eu corri o comando zip f1.zip f1
e obtive a saída como
zip f1.zip f1
adding: f1 (deflated 89%)
Agora, no comando acima, temos bytes previsíveis y
ou n
, e é por isso que temos uma porcentagem deflacionada de 89.
Agora, estou realizando o experimento como abaixo.
dd if=/dev/urandom of=./f2 bs=1M count=1
Se eu fizer o comando zip f2.zip f2
, isso é o que recebi como saída.
zip f2.zip f2
adding: f2 (deflated 0%)
Como o /dev/urandom
é completamente imprevisível, estamos obtendo uma taxa de deflação de 0%. O link de referência que forneci abaixo tem uma explicação muito boa sobre como calcular a entropia para bytes previsíveis.
Além disso, existe essa ferramenta ent
para calcular a entropia de um arquivo em sistemas baseados no debian. Você poderia apenas fazer um apt get install ent
e calcular a taxa de entropia como ent filename
e descobrir o que realmente está acontecendo.
Você pode ler aqui sobre esse comando.
Referências