Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

7z extract

6 views
Skip to first unread message

Ulli Horlacher

unread,
Mar 10, 2023, 7:44:27 AM3/10/23
to

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/

Ulli Horlacher

unread,
Mar 10, 2023, 8:51:38 AM3/10/23
to
Ulli Horlacher <fram...@rus.uni-stuttgart.de> wrote:
>
> 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.

Inzwischen herausgefunden: das ist tatsaechlich der (extrem schlecht
dokumentierte) Default :-(

https://superuser.com/questions/665856/extracting-one-file-from-archive-7-zip-requires-decompressing-entire-archive
https://sevenzip.osdn.jp/chm/cmdline/switches/method.htm

Weder die 7z man-page noch die usage erklaeren das!

Man muss also beim Erstellen des Archivs die Option -ms=off angeben.

Beispiel:

framstag@fex:/local/tmp: 7z a -ms=off data2_msoff.7z data2
(...)

framstag@fex:/local/tmp: time 7z e data2_msoff.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, 2724627326 bytes (2599 MiB)

Extracting archive: data2_msoff.7z
--
Path = data2_msoff.7z
Type = 7z
Physical Size = 2724627326
Headers Size = 15233
Method = LZMA2:3m
Solid = -
Blocks = 1169

Everything is Ok

Size: 2536485
Compressed: 2724627326

real 0m0.169s
user 0m0.157s
sys 0m0.012s


Jetzt ist das Extrahieren einer Einzeldatei aehnlich schnell wie bei zip.
Dabei ist das Gesamtarchiv grad mal 2% groesser geworden als bei -ms=on

Der Default ist sowohl schlecht gewaehlt als auch schlecht dokumentiert!

7zip hat halt einen Windows-Ursprung, da ist eben Murks Standard. :-}
0 new messages