Lösung 1:
tar (und cpio und afio und pax und ähnliche Programme) sind Stream-orientierte Formate - sie sollen direkt auf ein Band gestreamt oder in einen anderen Prozess geleitet werden. Während es theoretisch möglich wäre, einen Index am Ende der Datei/des Streams hinzuzufügen, kenne ich keine Version, die dies tut (es wäre jedoch eine nützliche Erweiterung)
Es hilft nicht bei Ihren bestehenden tar- oder cpio-Archiven, aber es gibt ein anderes Tool, dar ("Festplattenarchiv"), das Archivdateien erstellt, die einen solchen Index enthalten, und Ihnen schnellen direkten Zugriff auf einzelne Dateien innerhalb des Archivs ermöglichen kann .
wenn dar nicht in Ihrer unix/linux-dist enthalten ist, finden Sie es unter:
http://dar.linux.free.fr/
Lösung 2:
Sie könnten SquashFS für solche Archive verwenden. Es ist
- entworfen für den Zugriff über einen Sicherungstreiber (obwohl es eine traditionelle Schnittstelle gibt)
- komprimiert (je größer die Blockgröße, desto effizienter)
- im Linux-Kernel enthalten
- speichert UIDs/GIDs und Erstellungszeit
- endianess-fähig, daher ziemlich portabel
Der einzige Nachteil, den ich kenne, ist, dass es schreibgeschützt ist.
http://squashfs.sourceforge.net/http://www.tldp.org/HOWTO/SquashFS-HOWTO/whatis.html
Lösung 3:
Es speichert zwar keinen Index, star
soll angeblich schneller als tar
sein . Außerdem unterstützt es längere Dateinamen und bietet eine bessere Unterstützung für Dateiattribute.
Wie Sie sicher wissen, braucht das Dekomprimieren der Datei Zeit und würde wahrscheinlich die Geschwindigkeit der Extraktion beeinflussen, selbst wenn ein Index vorhanden wäre.
Bearbeiten: Vielleicht möchten Sie auch einen Blick auf xar
werfen . Es hat einen XML-Header, der Informationen über die Dateien im Archiv enthält.
Von der referenzierten Seite:
Der XML-Header von Xar erlaubt es, beliebige Metadaten über Dateien zu enthalten, die im Archiv enthalten sind. Zusätzlich zu den Standard-Unix-Dateimetadaten wie der Größe der Datei und ihrer Änderungs- und Erstellungszeiten kann xar Informationen wie ext2fs- und hfs-Dateibits, Unix-Flags, Verweise auf erweiterte Attribute, Mac OS X Finder-Informationen, Mac OS speichern X-Ressourcengabeln und Hashes der Dateidaten.
Lösung 4:
Thorbjørn Ravn Anderser hat Recht. GNU tar erstellt standardmäßig "durchsuchbare" Archive. Aber es verwendet diese Informationen nicht, wenn es diese Archive liest, wenn die Option -n nicht angegeben ist. Mit der Option -n habe ich gerade eine 7-GB-Datei aus einem 300-GB-Archiv in der Zeit extrahiert, die zum Lesen/Schreiben von 7 GB erforderlich ist. Ohne -n dauerte es mehr als eine Stunde und brachte kein Ergebnis.
Ich bin mir nicht sicher, wie sich die Komprimierung darauf auswirkt. Mein Archiv wurde nicht komprimiert. Komprimierte Archive sind nicht "durchsuchbar", da das aktuelle (1.26) GNU tar die Komprimierung auf ein externes Programm auslagert.
Lösung 5:
Das einzige mir bekannte Archivformat, das einen Index speichert, ist ZIP, weil ich mehr als einmal beschädigte Indexe rekonstruieren musste.