Non è possibile migliorare il rapporto di compressione senza decomprimere i dati. Non è necessario estrarre tutti i file zip prima di comprimerli, ma ti consiglio di decomprimere un intero file zip prima di ricomprimerli.
È possibile ricomprimere i file in un file zip uno alla volta e aggiungerli nuovamente prima di passare al file successivo contenuto nel file zip. Ciò richiede N riscritture del file zip per un file zip contenente N file. È molto più efficiente estrarre gli N file e generare il nuovo file zip in una volta sola, comprimendo tutti i file con -9
.
C'è un'utilità chiamata AdvanceCOMP che fa esattamente quello che stai cercando. Ricomprime i file ZIP e GZ (e alcuni altri) senza estrazione intermedia su disco. (Credo che il meccanismo utilizzato sia quello di decomprimere i dati e ricomprimerli, ma ciò non richiede la scrittura di file su disco o la rigenerazione dei metadati.)