Sfortunatamente, per decomprimere un singolo membro .tar.gzdell'archivio devi elaborare l'intero archivio e non puoi fare molto per risolverlo.
Qui è dove .zip(e alcuni altri formati come .rar) gli archivi funzionano molto meglio, perché il zipformato ha una directory centrale di tutti i file in esso contenuti con offset diretti che puntano al centro del zipfile, quindi i membri dell'archivio possono essere rapidamente estratti senza elaborare il tutto.
Potresti chiederti perché l'elaborazione .tar.gzè così lenta?
.tar.gz(spesso abbreviato come .tgz) è semplicemente un .tararchivio compresso con il gzipcompressore. gzipè un compressore in streaming che può funzionare solo con un file. Se vuoi ottenere qualsiasi parte del gzipflusso, devi decomprimerlo nel suo insieme, e questo è ciò che lo uccide davvero per .tar.gz(e per .tar.bz2, .tar.xze altri formati simili basati su .tar).
.taril formato è in realtà molto, molto semplice. È semplicemente un flusso di intestazioni di file o directory a 512 byte (nome, dimensione, ecc.), Ciascuna seguita dal contenuto del file o della directory (riempito con una dimensione di 512 blocchi con 0 byte se necessario). Quando si osserva un blocco 512 totalmente nullo per un'intestazione, questo significa fine .tardell'archivio.
Alcune persone pensano che anche ai .tarmembri dell'archivio non sia possibile accedere rapidamente, ma questo non è del tutto vero. Se l' .tararchivio contiene pochi file di grandi dimensioni, in realtà puoi cercare rapidamente nell'intestazione successiva e quindi puoi trovare il membro di archivio necessario in poche ricerche (ma potresti comunque richiedere tante ricerche quanti sono i membri dell'archivio). Se il tuo .tararchivio contiene molti piccoli file, ciò significa che il recupero rapido dei membri diventa effettivamente impossibile anche per i non compressi .tar.