WinFuture-Forum.de: 7zip - Design Flaw? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Software
Seite 1 von 1

7zip - Design Flaw?


#1 Mitglied ist offline   ph030 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.130
  • Beigetreten: 14. Juli 04
  • Reputation: 36
  • Geschlecht:unbekannt

geschrieben 17. März 2008 - 16:27

Zunächst, mein Wissen um Komprimierungsalgorithmen ist begrenzt, daher bitte ich - so vorhanden - offensichtliche Falsch-Interpretationen zu entschuldigen.

Ich habe hier ein paar 7z-Archive mit jeweils 2k oder mehr Dateien, welche wie folgt erstellt wurden
7z a -mx=9 archiv.7z *
(der -mx-Faktor spielt für das weitere keine Rolle).

Den Inhalt eines Archivs liste ich mit
7z l archiv.7z
und pipe den Output entweder durch einen Pager oder durch grep.

Wenn ich nun einzelne oder mehrere Dateien aus diesem Archiv extrahieren will, via
7z x archiv.7z datei_1 datei_2 ... datei_n
, dauert das verdammt lange, da das Programm bei der ersten includierten Datei beginnt und für jede nicht gewünschte Datei ein "Skipping file $name" ausgibt.

Wäre es nicht logischer, im Header eine Tabelle anzulegen, bei welchem Offset welche Datei beginnt und wie groß diese ist, so dass man direkt an die gewünschte(n) Stelle(n) springen und dort mit der Arbeit beginnen kann?

Die Archive sind jeweils nicht solid, nicht gescrambled und nicht mit einem Passwort geschützt und mit den *nix-Versionen von 7zip erstellt - glaube aber, dass es hier keinen Unterschied zur Windows-Version gibt.

Ist das nun ein Design-Flaw, technisch nicht besser machbar, ein Bug oder was?
0

Anzeige



#2 Mitglied ist offline   ThreeM 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.493
  • Beigetreten: 22. Februar 06
  • Reputation: 0
  • Wohnort:Hamburg

geschrieben 17. März 2008 - 16:36

Sorry 4 Offtopic: Das ist einer der Dinge wieso ich rar (auch wenn es nicht frei ist) bevorzuge.
Chuck Norris kann auch bei Winfuture klein geschriebene Themen erstellen!
0

#3 Mitglied ist offline   ph030 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.130
  • Beigetreten: 14. Juli 04
  • Reputation: 36
  • Geschlecht:unbekannt

geschrieben 17. März 2008 - 16:42

NP. Das heisst, bei RAR ist das geschilderte Verhalten nicht vorzufinden oder zumindest nicht so extrem? Das bedeutet im Umkehrschluss, dass es technisch machbar ist und nur - aus welchen Gründen auch immer - darauf verzichtet wird.

Ich habe schon lange kein RAR mehr für eigene Archive genutzt, aber es wäre einen Versuch wert, denn teilweise darf ich hier 15Min+ warten, nur um eine 10kb Datei zu entpacken :)

Edit, noch so ein (imho) Bug, wo ich mit @Witi schonmal drüber geredet habe...
dd if=/dev/zero of=bogus bs=10M count=1000
erstellt ein 10GB File bestehend ausschließlich aus Nullen(0). Es kann doch imho nicht angehen, dass es 15Mins+ braucht, um das zu komprimieren? Aus meinem laienhaften Verstädnis, würde ich da zwei Filter drüber laufen lassen, 1. ein Check, ob mindestens zwei verschiedene Zeichen vorkommen, 2. die Gesammtzahl der Zeichen ermitteln. Dann bräuchte ich doch nur noch "$großeZahl * 0" eintragen und die Sache ist gegessen - imho kann das nicht so lange dauern :/

Dieser Beitrag wurde von ph030 bearbeitet: 17. März 2008 - 16:51

0

#4 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 17. März 2008 - 16:53

Also unter Windows arbeitet das Teil genauso: Geht sämtliche Dateien durch und entpackt nur die angegebene.

Aber dieses Vorgehen ist meiner Meinung nach korrekt. Denn die angegebenen Dateien können mehrmals vorkommen, in unterschiedlichen Ordnern. Somit gibst du dort keine Dateien an, sondern Ausdrücke. Du hast auch die Möglichkeit sowas zu machen:
7z x archiv.7z *.java -r
Damit werden sämtliche Dateien mit der Endung .java in allen Unterordnern gepackt.

Was meinst du, wie groß der Header bzw. die Datei werden würde, wenn du diese Informationen noch reinpackst?

Abgesehen davon, einen Schalter -q bzw. --quiet gibt es anscheinend nicht oder? Fände ich praktisch, um die nervigen Skippingmeldung abzuschalten.

Zitat

Sorry 4 Offtopic: Das ist einer der Dinge wieso ich rar (auch wenn es nicht frei ist) bevorzuge.

bla...winrar wird's nicht anders machen.
0

#5 Mitglied ist offline   ph030 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.130
  • Beigetreten: 14. Juli 04
  • Reputation: 36
  • Geschlecht:unbekannt

geschrieben 17. März 2008 - 16:58

Gut, die Sache mit den Ausdrücken wäre ein Argument, allerdings könnte man ja jedem File eine aufsteigende Index-Nummer geben - dann hielte sich auch der Overhead für den Header wieder in Grenzen. Wenn ich hier 50GB in einem File habe, nehme ich auch gerne ein paar MB für den Index in Kauf, hauptsache ich muss nicht ewig warten. Man stelle sich vorher, man will ausschließlich das letzte File in einem Archiv entpacken, da bin ich ja mindestens genauso schnell, wenn ich alles entpacke und überflüssiges lösche...

Eine -q hab ich nicht entdeckt, natürlich könnte man wieder gegen /dev/null agieren, aber das ist auch dämlich. Ich wage auch zu bezweifeln, dass es irgendeine Sau interessiert, welche Files nun alle geskipped werden, solange die gewünschten möglichst fix entpackt werden.

Edit, das mit dem mehrmals vorkommen dürfte aber zumindest bei "7z e" nicht sinnvoll sein, weil da nur die Datei selbst ohne den kompletten Pfad entpackt wird - bei "7z x" wäre das schon sinnvoller...

Dieser Beitrag wurde von ph030 bearbeitet: 17. März 2008 - 17:00

0

#6 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 17. März 2008 - 17:27

Hmm...könnte jetzt irgendwas spekulieren und mir was aus den Fingern saugen, aber dazu kenne ich mich dann doch leider zu schlecht (wenn überhaupt) mit Komprimierungsalgorithmen aus.

Vielleicht könntest du mal deine Frage in das offizielle Forum stellen. Der Pavlov scheint da auch recht aktiv zu sein.

Zitat

das mit dem mehrmals vorkommen dürfte aber zumindest bei "7z e" nicht sinnvoll sein

Ob's sinnvoll ist oder nicht, sei mal dahin gestellt. Jedenfalls fragt 7z standardmäßig nach, falls er eine Datei überschreiben will, sonst kannste auch -y angeben.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0