К сожалению, чтобы распаковать отдельный элемент архива .tar.gz вам нужно обработать весь архив, и не так много, чтобы исправить его.
Именно здесь архивы .zip (и некоторых других форматов, например .rar) работают намного лучше, потому что в формате zip есть центральный каталог всех файлов, содержащихся в нем, с прямыми смещениями, указывающими на середину zip файла, поэтому элементы архива можно быстро извлечь без обработки всего этого.
Вы можете спросить, почему обработка .tar.gz такая медленная?
.tar.gz (часто сокращается до .tgz) - это просто архив .tar сжатый с помощью компрессора gzip . gzip - это потоковый компрессор, который может работать только с одним файлом. Если вы хотите получить какую-либо часть потока gzip , вы должны распаковать его целиком, и это то, что действительно убивает его для .tar.gz (и для .tar.bz2 , .tar.xz и других подобных форматов, основанных на .tar).
Формат .tar самом деле очень, очень простой. Это просто поток 512-байтовых заголовков файла или каталога (имя, размер и т.д.), За которыми следует содержимое файла или каталога (дополняется до 512 блоков размером с 0 байтами, если необходимо). Когда вы видите полностью нулевой блок 512 для заголовка, это означает конец архива .tar .
Некоторые люди думают, что даже члены архива .tar не могут быть доступны быстро, но это не совсем так. Если архив .tar содержит несколько больших файлов, вы действительно можете быстро перейти к следующему заголовку, и, таким образом, вы можете найти необходимого члена архива за несколько поисков (но все же может потребоваться столько поисков, сколько имеется членов архива). Если ваш архив .tar содержит множество мелких файлов, это означает, что быстрый поиск членов становится практически невозможным даже для несжатого .tar .