Unfortunately, in order to unpack single member of
.tar.gz archive you have to process whole archive, and not much you can do to fix it.
This is where
.zip (and some other formats like
.rar) archives work much better, because
zip format has central directory of all files contained in it with direct offsets pointing to the middle of the
zip file, so archive members can be quickly extracted without processing whole thing.
You might ask why processing
.tar.gz is so slow?
.tar.gz (often shortened as
.tgz) is simply
.tar archive compressed with
gzip is streaming compressor that can only work with one file. If you want to get any part of
gzip stream, you have to uncompress it as a whole, and this is what really kills it for
.tar.gz (and for
.tar.xz and other similar formats based on
.tar format is actually very, very simple. It is simply stream of 512-byte file or directory headers (name, size, etc), each followed by file or directory contents (padded to 512 block size with 0 bytes if necessary). When you observe totally null 512 block for a header, this means end of
Some people think that even
.tar archive members cannot be accessed quickly, but this is not quite true. If
.tar archive contains few big files, you actually can quickly seek into next header, and thus you can find necessary archive member in few seeks (but still could require as many seeks as there are archive members). If your
.tar archive contains of lots of tiny files, this means quick member retrieval becomes effectively impossible even for uncompressed