Ich verwende, tar
um eine Gruppe sehr großer (Multi-GB) bz2
Dateien zu archivieren .
Das tar -tf file.tar
Auflisten der Dateien im Archiv dauert sehr lange (~ 10-15 Minuten).
Ebenso cpio -t < file.cpio
dauert es genauso lange, plus oder minus ein paar Sekunden.
Entsprechend tar -xf file.tar myFileOfInterest.bz2
langsam ist das Abrufen einer Datei aus einem Archiv ( beispielsweise über).
Gibt es eine Archivierungsmethode, die einen sofort verfügbaren "Katalog" mit dem Archiv führt, sodass eine einzelne Datei innerhalb des Archivs schnell abgerufen werden kann?
Zum Beispiel eine Art Katalog, der einen Zeiger auf ein bestimmtes Byte im Archiv sowie die Größe der abzurufenden Datei (sowie andere dateisystemspezifische Angaben) speichert.
Gibt es ein Tool (oder ein Argument für tar
oder cpio
), mit dem eine Datei im Archiv effizient abgerufen werden kann?
Sie können SquashFS für solche Archive verwenden. Es ist
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
quelle
Es speichert zwar keinen Index,
star
soll aber schneller sein alstar
. Außerdem werden längere Dateinamen und Dateiattribute besser unterstützt.Wie Sie sicher wissen, dauert das Dekomprimieren der Datei einige Zeit und ist wahrscheinlich ein Faktor für die Geschwindigkeit des Extrahierens, selbst wenn ein Index vorhanden wäre.
Bearbeiten: Vielleicht möchten Sie auch einen Blick darauf werfen
xar
. Es hat einen XML-Header, der Informationen zu den Dateien im Archiv enthält.Von der referenzierten Seite:
quelle
star
ist down ......Thorbjørn Ravn Anderser hat recht. GNU tar erstellt standardmäßig "durchsuchbare" Archive. Diese Informationen werden jedoch beim Lesen dieser Archive nicht verwendet, wenn die Option -n nicht angegeben ist. Mit der Option -n habe ich gerade eine 7-GB-Datei aus einem 300-GB-Archiv extrahiert, die zum Lesen / Schreiben von 7-GB-Dateien benötigt wird. Ohne -n dauerte es mehr als eine Stunde und brachte kein Ergebnis.
Ich bin nicht sicher, wie sich die Komprimierung darauf auswirkt. Mein Archiv wurde nicht komprimiert.Komprimierte Archive sind nicht "suchbar", da der aktuelle (1.26) GNU-Teer die Komprimierung in ein externes Programm verlagert.quelle
Das einzige Archivformat, von dem ich weiß, dass es einen Index speichert, ist ZIP, weil ich beschädigte Indizes mehr als einmal rekonstruieren musste.
quelle
Es indiziert nicht, wovon ich weiß, aber ich verwende dump & restore bei großen Dateien, und das Navigieren im Wiederherstellungsbaum im interaktiven Modus, um zufällige Dateien auszuwählen, ist SEHR schnell.
quelle
Sie können das Archiv- / Komprimierungsformat 7z (7zip) verwenden, wenn Sie Zugriff auf das
p7zip-full
Paket haben.Unter Ubuntu können Sie diesen Befehl verwenden, um es zu installieren:
Um ein Archiv zu erstellen, das Sie verwenden können,
7z a <archive_name> <file_or_directory>
und wenn Sie die Dateien nicht komprimieren und nur so speichern möchten, wie sie sind, können Sie die folgende-mx0
Option verwenden:Sie können die Dateien dann extrahieren, indem Sie Folgendes verwenden
7z e
:Oder Sie listen den Index des Archivs mit dem auf, mit dem Sie
7z l
suchen könnengrep
:Dies ist auch die
t
Option zum Testen der Integrität,u
zum Hinzufügen / Aktualisieren einer Datei zum Archiv undd
zum Löschen einer Datei.WICHTIGER HINWEIS
Do nicht verwenden , um das 7 - Zip - Format für Linux - Dateisystem - Backups , da es nicht den Besitzer speichert und Gruppe der enthaltenen Dateien.
quelle
Ich glaube, dass GNU Teer in der Lage ist, das zu tun, was Sie wollen, aber ich kann keine definitive Ressource finden, die dies sagt.
In jedem Fall benötigen Sie ein Archivierungsformat mit einem Index (da Sie damit tun können, was Sie wollen). Ich glaube nicht, dass ZIP-Dateien so groß werden können, leider.
quelle