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