Como @kinokijuf disse, há um cabeçalho de arquivo. Mas para expandir isso, há algumas outras coisas para entender sobre a compactação de arquivos.
O cabeçalho zip contém todas as informações necessárias para identificar o tipo de arquivo (o número mágico), a versão zip e, finalmente, uma listagem de todos os arquivos incluídos no arquivo.
Seu arquivo provavelmente não foi compactado de qualquer maneira. Se você executar unzip -l example.zip
, provavelmente verá que o tamanho do arquivo não foi alterado. 19 bytes provavelmente gerariam mais sobrecarga do que seria salvo se fosse compressível por DEFLATE (o principal método de compactação usado pelo zip).
Em outros casos, imagens PNG, por exemplo, já estão compactadas, então o zip apenas as armazenará. O DEFLATE não incomodará a compactação de nada já compactado.
Se, por outro lado, você tivesse muitos arquivos de texto, e seu tamanho fosse mais do que alguns kilobytes cada, você obteria grandes economias colocando-os todos em um único arquivo zip.
Você obterá sua melhor economia ao compactar dados formatados muito regulares, como um arquivo de texto contendo um dump SQL. Por exemplo, uma vez eu tive um despejo de um pequeno banco de dados SQL em torno de 13MB. Eu corri zip -9 dump.sql dump.zip
e acabei com cerca de 1MB depois.
Outro fator é o seu nível de compressão. Muitos arquivadores, por padrão, só compactam em nível médio, indo para velocidade sobre redução. Ao compactar com zip, tente o sinalizador -9
para compactação máxima (acho que o manual 3.x diz que os níveis de compactação são suportados apenas por DEFLATE neste momento).
TL; DR
A sobrecarga para o arquivo excedeu todos os ganhos que você possa ter obtido para compactar o arquivo. Tente colocar arquivos de texto maiores lá e veja o que você recebe. Use o sinal -v
ao zipar para ver suas economias.