Vous ne pouvez pas améliorer le taux de compression sans décompresser les données. Vous n'êtes pas obligé d'extraire tous les fichiers zip avant de les compresser, mais je vous recommande de décompresser un fichier zip entier avant de le recompresser.
Il est possible de recompresser les fichiers d'un fichier zip un par un et de les rajouter avant de passer au fichier suivant contenu dans le fichier zip. Cela nécessite N réécritures du fichier zip pour un fichier zip contenant N fichiers. Il est beaucoup plus efficace d'extraire les N fichiers et de générer le nouveau fichier zip en une seule fois, en compressant tous les fichiers avec -9
.
Il existe un utilitaire appelé AdvanceCOMP qui fait exactement ce que vous recherchez. Il recompresse les fichiers ZIP et GZ (et quelques autres) sans extraction intermédiaire sur disque. (Je pense que le mécanisme utilisé consiste à décompresser les données et à les recompresser, mais cela ne nécessite pas d'écrire des fichiers sur le disque ou de régénérer les métadonnées.)