Home / LinuxUser / 2012 / 04 / Suche in komprimierten Dateien und Archiven

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

„Klickbunt auf dem Server? Warum nicht, wenn's hilft!"
(208 Punkte bei 7 Stimmen)
Bezahlstandard
(121 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Nadel im Datenhaufen

Suche in komprimierten Dateien und Archiven

Geschwindigkeit

An dieser Stelle erhebt sich die spannende Frage nach der Trefferquote und der Zeit, nach der das Suchergebnis feststeht. Obwohl für bestimmte Formate spezielle Werkzeuge existieren, arbeiten diese nicht automatisch besser – die Standard-Tools sind vielfach bis ins letzte Quäntchen optimiert.

Für einen Vergleich mit halbwegs plausiblen Werten stand im Test eine Datei mit 12 MByte ASCII-Text bereit. Diese wurde mit den jeweiligen Programmen komprimiert und dann darin gesucht – einmal über die Standardausgabe und einmal mit den formatspezifischen Suchprogrammen. Die Tabelle "Tools im Test" zeigt die ermittelten Werte, Abbildung 6 stellt diese grafisch gegenüber.

Tools im Test

Methode

Kommandoaufruf

Zeit (real)

Zeit (user)

Zeit (sys)

Unkomprimiert time grep --color -E "[Pp]reis.+pdf" testliste 0,040s 0,024s 0,016s
Bzegrep time bzegrep --color "[Pp]reis.+pdf" testliste.bz2 0,824s 0,832s 0,036s
Bzip2+Grep time bzip2 -dc testliste.bz2 | grep --color -E "[Pp]reis.+pdf" 0,826s 0,832s 0,036s
Zegrep time zegrep --color "[Pp]reis.+pdf" testliste.gz 0,189s 0,196s 0,024s
Gunzip+Grep time gunzip -dc testliste.gz | grep --color -E "[Pp]reis.+pdf" 0,173s 0,184s 0,016s
Xzgrep time xzgrep --color -E "[Pp]reis.+pdf" testliste.xz 0,113s 0,100s 0,044s
Xz+Grep time xz -dc testliste.xz | grep --color -E "[Pp]reis.+pdf" 0,097s 0,108s 0,020s

Abbildung 6: Die gemessenen Zeiten für die Kommandoaufrufe differieren teils deutlich.

Vorneweg: Die Liste der Treffer war im Test bei allen Programmen identisch und vollständig. Hingegen zeigen sich bei den gemessenen Zeiten für den Mustervergleich starke Unterschiede: Für jedes Komprimierungsformat existiert ein spezifisches Zeitverhalten. Am wenigsten Zeit benötigt XZ, Bzip2 arbeitet hingegen am längsten.

Abbildung 6 stellt die gemessenen Zeiten bei der Suche in den Textdaten dar. Die erste Säule zeigt die Suche mit Grep auf den unkomprimierten Daten (12 MByte). Die nachfolgenden, jeweils benachbarten Säulen zeigen die Dauer für einen spezifischen Suchweg – Säule 2 und 3 für Bzip2 (1,8 MByte Daten), Säule 4 und 5 für Gzip (2,4 MByte) und Säule sechs und sieben für Xz (98 KByte).

Hier fällt auf, dass sich jeder Suche eine spezifische Dauer zuordnen lässt. Dabei liegt die Suche über die Standardausgabe stets in der gleichen Klasse wie das formatspezifische Programm.

Unter Berücksichtigung der Kompressionsstärke gebührt dem XZ-Format die Ehre des Siegers. Im Vergleich zu den anderen Werkzeugen komprimiert dieses Tool sehr stark. Da es nur 98 KByte an Daten von der Festplatte zu lesen braucht, verringert sich der Gesamtaufwand für die Suche. Das Auspacken und Durchsuchen geschieht vollständig im RAM und verursacht daher die geringste Verzögerung.

Fazit

Archive und komprimierte Daten zu durchsuchen gelingt relativ problemlos, sofern Sie die verschiedenen Werkzeuge geschickt miteinander kombinieren. Das setzt aber die genaue Kenntnis der jeweiligen Optionen und Parameter voraus. Nutzen Sie die speziellen Tools aus den Paketen der einzelnen Archiv- und Komprimierungsprogramme, verringert sich der Aufwand etwas. Qualitativ ließ sich im Vergleich zu den klassischen Shell-Kommandos kein Unterschied feststellen.

Die Unterschiede in Bezug auf die Geschwindigkeit treten bei größerern Datenmengen vermutlich noch deutlicher hervor. Ob das im Alltagsgebrauch eine wesentliche Rolle spielt, hängt im Einzelfall von den archivierten Daten und deren Mengen ab. Mit Ausnahme von Zipgrep erfüllt jedes der vorgestellten Werkzeuge die Erwartungen.

Welche Kommandosequenz Sie letztendlich im Alltag einsetzen, hat oft einen ganz profanen Grund – gibt es das Paket für die genutzte Distribution überhaupt, ist es auch installiert? Weiterhin spielen die Lesbarkeit eines Kommandos und die Bequemlichkeit des Anwenders einen großen Einfluß bei der Nutzung. Verkürzte Schreibweisen sparen Zeit bei der Eingabe und verringern die Fehlerrate beim Einsatz.

Für andere Dateiformate existieren ebenfalls Grep-ähnliche Werkzeuge, unter anderem für PDF-Dokumente (pdfgrep[4], Audiodaten (taggrepper), Prozesslisten (pgrep) und Gnumeric-Rechenblätter (ssgrep). Eine erste Übersicht hat Axel Beckert in seinem Blog [5] zusammengetragen. 

Danksagung

Die Autoren bedanken sich bei Maximilian Techter, Thomas Osterried und Thomas Winde für deren kritische Anmerkungen und Kommentare im Vorfeld dieses Artikels.

Infos

[1] Werkzeuge auf der Kommandozeile: http://www-user.tu-chemnitz.de/~hot/unix_linux_werkzeugkasten/weitere_kdozeilen_beispiele.html

[2] Unpack-Paket bei Debian: http://packages.debian.org/squeeze/unp

[3] Debian-Bug-Report zu Zipgrep: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=652838

[4] Suche in Postscript und PDF: Frank Hofmann, "Gesucht, gefunden", LU 02/2012, S. 82, http://www.linux-community.de/25255

[5] "Grep everything": http://noone.org/blog/English/Computer/Shell/grep%20everything.futile

Der Autor

Axel Beckert (http://noone.org/abe/) hat Informatik an der Universität des Saarlandes in Saarbrücken studiert. Er arbeitet als Systemadministrator an der ETH Zürich am Departement für Physik. Nebenher ist er ehrenamtlich beim Debian-Projekt, in der Linux User Group Switzerland (LUGS), beim Hackerfunk (Radiosendung + Podcast) sowie weiteren Open-Source-Projekten aktiv.

Frank Hofmann hat Informatik an der Technischen Universität Chemnitz studiert. Derzeit arbeitet er in Berlin im Büro 2.0 (http://www.buero20.org), einem Open-Source Experten-Netzwerk, als Dienstleister mit Spezialisierung auf Druck und Satz (http://www.efho.de). Er ist Mitgründer des Schulungsunternehmens Wizards of FOSS (http://www.wizards-of-foss.de/). Seit 2008 koordiniert er das Regionaltreffen der Linux-User-Groups aus der Region Berlin-Brandenburg.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

title_2013_06

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Terminator
Viele Terminals im Griff mit Terminator
Tim Schürmann, 07.05.2013 10:57, 1 Kommentare

Wer morgens nach dem Einschalten des Rechners erst einmal mehrere Terminals öffnet und sich diese mühevoll auf dem Bildschirm drapiert, der sollte einen Blick auf Terminator werfen. Das kleine...

Aktuelle Fragen

Kontakt via QR code hinzufügen
Herman Sproesser, 17.05.2013 17:46, 3 Antworten
Hi hab in der aktuellen ausgabe 06.2013 den artikel über QR Codes gelesen. Ich hab nartürlich...
Dateimanager Dolphin, wo legt er die Datei Kommentare ab?
Uwe Heine, 16.05.2013 15:19, 1 Antworten
Suse Linux 12.1 - KDE 4.7.2 / Dolphin 1.7. Ich habe bei vielen Dateien über Dolphin Kommentare...
wie baut man Kernel Module so, dass sie mit jedem Kernel laden?
GoaSkin , 22.04.2013 10:22, 1 Antworten
Hallo, baut man anhand eines Kernel-Sources Module, nutzt Linux im Normalfall eine strikte V...
Problem beim Installieren von SuSe 12.3
Georg Prokert, 14.04.2013 00:04, 16 Antworten
Hallo, auf meinem neuem Laptop (Acer Aspire V3-771, Intel Core i5-3230 M, Intel HD Graphics 4...
lvm wieder loswerden
Peter Dibbern, 11.04.2013 16:28, 4 Antworten
Ich habe sämtliche alten Kisten ausgeschlachtet und aus der Teilen einen Rechner zusammengeschrau...