Ich hab grad mit erschrecken festgestellt, dass beim Extrahieren einer
einzelnen Datei aus einem 7z Archiv dieses bis dahin KOMPLETT
dekomprimiert wird?! Also aehnlich wie bei tar.
Am Beispiel:
framstag@fex:/local/tmp: l data*
dRWX - 2023-03-06 11:58 data2
-RW- 2,666,129,450 2023-03-10 13:24 data2.7z
-RW- 2,745,052,441 2023-03-10 13:24 data2.zip
framstag@fex:/local/tmp: 7z l data2.7z | grep data2 | wc -l
1172
framstag@fex:/local/tmp: 7z l data2.7z | grep JPG | tail -1
2023-02-21 11:41:26 ....A 2536485 data2/P2217237.JPG
framstag@fex:/local/tmp: time 7z e data2.7z data2/P2217237.JPG
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.ISO-8859-15,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz (406F0),ASM,AES-NI)
Scanning the drive for archives:
1 file, 2666129450 bytes (2543 MiB)
Extracting archive: data2.7z
--
Path = data2.7z
Type = 7z
Physical Size = 2666129450
Headers Size = 12331
Method = LZMA2:24
Solid = +
Blocks = 2
Everything is Ok
Files: 272
Size: 670604427
Compressed: 2666129450
real 0m41.646s
user 0m41.296s
sys 0m0.340s
42 SEKUNDEN fuer EINE Datei!!
Dagegen macht zip wohl ein seek:
framstag@fex:/local/tmp: time unzip -j data2.zip data2/P2217237.JPG
Archive: data2.zip
inflating: P2217237.JPG
real 0m0.036s
user 0m0.036s
sys 0m0.000s
und ist somit ueber 1000 mal schneller!
Hab ich was falsch gemacht/verstanden oder ist das 7z Format wirklich so
bloed aufgebaut?
Die Lage ist sogar noch schlimmer: Ich hab eine Anwendung, die in einer
Schleife alle Dateien aus einem 7z Archiv extrahiert und in einer pipe
weiterverarbeitet. In dem Fall wird das data2.7z also ueber 1000 mal
dekomprimiert...
Dabei hat das data2.7z hier "nur" knapp 3 GB.
Ich hab aber auch Archive im multi-TB Bereich :-}
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail:
horl...@tik.uni-stuttgart.de
Allmandring 30a Tel:
++49-711-68565868
70569 Stuttgart (Germany) WWW:
https://www.tik.uni-stuttgart.de/