Esta é uma resposta da minha resposta a uma pergunta semelhante:
O formato do arquivo ZIP inclui um diretório (índice) no final do arquivo morto. Esse diretório diz onde, dentro do arquivo, cada arquivo está localizado e, portanto, permite acesso rápido e aleatório, sem a leitura de todo o arquivo.
Isso parece representar um problema ao tentar ler um arquivo ZIP por meio de um canal, pois o índice não é acessado até o final e, portanto, os membros individuais não podem ser extraídos corretamente até depois que o arquivo foi totalmente lido e não está mais disponível . Como tal, não surpreende que a maioria dos descompressores ZIP simplesmente falhe quando o arquivo é fornecido através de um tubo.
O diretório no final do arquivo morto não é o único local em que as meta informações do arquivo são armazenadas no arquivo morto. Além disso, entradas individuais também incluem essas informações em um cabeçalho de arquivo local, para fins de redundância.
Embora nem todos os descompactadores ZIP usem cabeçalhos de arquivos locais quando o índice estiver indisponível, os front-ends tar e cpio para libarchive (também conhecidos como bsdtar e bsdcpio) podem e o fazem ao ler através de um canal , o que significa que o seguinte é possível:
wget -qO- http://example.org/file.zip | bsdtar -xvf-