Indiziertes Archivformat?

Indiziertes Archivformat?

Ich muss komprimierte Dateiarchive erstellen und in der Lage sein, schnell einzelne Dateien/Verzeichnisse daraus zu extrahieren.

Das Problem ist beispielsweise, dass tar.bz2 für eine solche Aufgabe nicht die beste Wahl zu sein scheint – das Extrahieren einer einzelnen 4-KB-Datei aus einem 200-MB-Archiv (50.000 Dateien) dauert auf meinem Computer 17 Sekunden.

Gibt es ein Archivformat, das einen schnellen Export einzelner Dateien aus dem Archiv ermöglicht (und unter Linux funktioniert)?

Antwort1

pixzist eine parallele, indizierende Version von xz.

# Compress:
tar -I pixz -cf foo.tar.xz ./foo

# Decompress:
tar -I pixz -xf foo.tar.xz

# Very quickly list the contents of the compressed tarball:
pixz -l foo.tar.xz

# Very quickly extract a single file:
pixz -x dir/file < foo.tar.xz | tar x

Antwort2

Das Zip-Format komprimiert jede Datei einzeln und kombiniert sie dann (mit einem Verzeichnis der Archivinhalte) zu einer einzigen Archivdatei.

Antwort3

Neben dem bereits erwähnten Zip-Format können die Dienstprogramme darund dumpauch gut damit umgehen und behalten im Gegensatz zu Zip die Unix-Berechtigungen bei. darSie sollten die Option Solid Archive vermeiden, da diese auf die Tar/Gzip-Methode zurückgeht, bei der das Ganze auf einmal komprimiert wird. Dies führt zu einer besseren Komprimierung, aber das Extrahieren einzelner Dateien dauert länger, da die gesamte Datei dekomprimiert werden muss, bis die gewünschte Datei gefunden wird. dumpkann große Mengen kleinerer Dateien (Zehntausende) recht gut verarbeiten und kann Multithread-Komprimierung durchführen, liest aber nur ext[234]-Dateisysteme.

Antwort4

.tar.gzhat eine schnellere Dekomprimierungsgeschwindigkeit, aber der Kompromiss ist die schlechteste Komprimierungsgröße. Bearbeiten: Ignacio Vazquez-Abrams hat mich überwältigt.

verwandte Informationen