На жаль, для того, щоб розпакувати один член .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.