Leider müssen Sie zum Entpacken eines einzelnen .tar.gzArchivmitglieds das gesamte Archiv verarbeiten, und Sie können nicht viel tun, um es zu reparieren.
Hier arbeiten .zip(und einige andere Formate wie .rar) Archive viel besser, da das zipFormat ein zentrales Verzeichnis aller darin enthaltenen Dateien mit direkten Offsets aufweist, die auf die Mitte der zipDatei verweisen , sodass Archivmitglieder schnell extrahiert werden können, ohne das Ganze zu verarbeiten.
Sie fragen sich vielleicht, warum die Verarbeitung .tar.gzso langsam ist?
.tar.gz(oft abgekürzt als .tgz) wird einfach .tarmit gzipCompressor komprimiert archiviert . gzipStreaming-Kompressor, der nur mit einer Datei arbeiten kann. Wenn Sie einen Teil davon zu bekommen , wollen gzipStrom, haben Sie es als Ganzes zu dekomprimieren, und das ist , was tötet es wirklich für .tar.gz(und .tar.bz2, .tar.xzund andere ähnliche Formate basieren auf .tar).
.tarFormat ist eigentlich sehr, sehr einfach. Es handelt sich lediglich um einen Stream von 512-Byte-Datei- oder -Verzeichnis-Headern (Name, Größe usw.), gefolgt von Datei- oder Verzeichnisinhalten (bei Bedarf mit 0 Byte auf 512-Blockgröße aufgefüllt). Wenn Sie für einen Header einen Block von insgesamt null 512 beobachten, bedeutet dies das Ende des .tarArchivs.
Einige Leute denken, dass nicht einmal .tarArchivmitglieder schnell darauf zugreifen können, aber das ist nicht ganz richtig. Wenn das .tarArchiv nur wenige große Dateien enthält, können Sie tatsächlich schnell in den nächsten Header suchen und so das erforderliche Archivmitglied in wenigen Suchvorgängen finden (es können jedoch immer noch so viele Suchvorgänge erforderlich sein, wie Archivmitglieder vorhanden sind). Wenn Ihr .tarArchiv viele winzige Dateien enthält, ist ein schneller Abruf von Mitgliedern auch ohne Komprimierung praktisch nicht möglich .tar.