Sfortunatamente, per decomprimere un singolo membro .tar.gz
dell'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 zip
formato ha una directory centrale di tutti i file in esso contenuti con offset diretti che puntano al centro del zip
file, 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 .tar
archivio compresso con il gzip
compressore. gzip
è un compressore in streaming che può funzionare solo con un file. Se vuoi ottenere qualsiasi parte del gzip
flusso, devi decomprimerlo nel suo insieme, e questo è ciò che lo uccide davvero per .tar.gz
(e per .tar.bz2
, .tar.xz
e altri formati simili basati su .tar
).
.tar
il 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 .tar
dell'archivio.
Alcune persone pensano che anche ai .tar
membri dell'archivio non sia possibile accedere rapidamente, ma questo non è del tutto vero. Se l' .tar
archivio 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 .tar
archivio contiene molti piccoli file, ciò significa che il recupero rapido dei membri diventa effettivamente impossibile anche per i non compressi .tar
.