残念ながら、.tar.gz
アーカイブの単一のメンバーを解凍するには、アーカイブ全体を処理する必要があり、それを修正するためにできることはあまりありません。
これは、.zip
(およびのような他の形式の.rar
)アーカイブがはるかにうまく機能する場所です。これは、zip
形式に含まれるすべてのファイルの中央ディレクトリがファイルの中央を指す直接オフセットzip
であるため、アーカイブメンバーをすべて処理せずにすばやく抽出できるためです。
処理.tar.gz
が非常に遅い理由を尋ねるかもしれません。
.tar.gz
(しばしばとして短縮.tgz
)は、.tar
コンプレッサーでgzip
圧縮されたアーカイブです。gzip
1つのファイルでのみ機能するストリーミングコンプレッサーです。gzip
ストリームの一部を取得したい場合は、全体として圧縮を解除する必要があり、これが.tar.gz
(および.tar.bz2
、.tar.xz
およびに基づいた他の同様の形式のために)本当にそれを殺すものです.tar
。
.tar
形式は実際には非常に単純です。これは単に512バイトのファイルまたはディレクトリヘッダー(名前、サイズなど)のストリームであり、それぞれにファイルまたはディレクトリの内容が続きます(必要に応じて0バイトで512ブロックサイズにパディングされます)。ヘッダーの512ブロックが完全にヌルである場合、これは.tar
アーカイブの終了を意味します。
一部の人々は、.tar
アーカイブのメンバーでさえ迅速にアクセスできないと考えていますが、これは全く真実ではありません。.tar
アーカイブに含まれる大きなファイルが少ない場合、実際に次のヘッダーをすばやくシークできるため、必要なアーカイブメンバーを数回のシークで見つけることができます(ただし、アーカイブメンバーと同じ数のシークが必要になる場合があります)。.tar
アーカイブに多数の小さなファイルが含まれている場合、これは、圧縮されていない場合でもメンバーの迅速な取得が事実上不可能になることを意味します.tar
。