Einführung & Funktionsweise
Wer komprimierte Archive unter Ubuntu auf Übereinstimmung prüfen möchte, muss diese keineswegs erst zeitaufwendig auf dem Datenträger dekomprimieren. Das Dienstprogramm bzcmp ermöglicht den direkten Byte-für-Byte-Abgleich von bzip2-Archiven im laufenden Betrieb. Dieser Leitfaden demonstriert praxisnah, wie Sie Integritätsprüfungen via Shell-Rückgabewert durchführen, gezielt Differenzen lokalisieren und gepackte Daten mit unkomprimiertem Klartext gegenüberstellen.
Vorbereitung: Paketinstallation und Testdaten anlegen
Bevor das Hilfswerkzeug einsatzbereit ist, empfiehlt sich die Sicherstellung der Basispakete über die Paketverwaltung:

Für ein nachvollziehbares Szenario erzeugen wir drei Textdateien: Zwei davon mit identischem Inhalt und ein Exemplar mit einer modifizierten Zeile.

Mittels des Schalters -k (keep) komprimieren wir die Dateien zu .bz2-Archiven, ohne dass die ursprünglichen Textdateien verworfen werden, und listen das Ergebnis auf:

Identische Archive abgleichen und Exit-Code ($?) prüfen
Für den ersten Testlauf übergeben wir zwei inhaltlich deckungsgleiche Archive an den Befehl bzcmp sample1.txt.bz2 sample2.txt.bz2.
Entsprechend der Unix-Philosophie liefert das Programm bei vollständiger Konformität keinerlei Ausgabe im Terminal:

Um den Erfolg programmatisch abzusichern, prüfen wir die Statusvariable $? über echo "Exit Code: $?".
Der Rückgabewert 0 bestätigt verlässlich, dass beide Archive bitgenau denselben Dekomprimierungsstrom repräsentieren:

Abweichungen aufspüren und Bytes detailliert analysieren
Sobald zwei Dateien voneinander abweichen, verhält sich das Werkzeug anders: Beim Aufruf von bzcmp sample1.txt.bz2 sample3.txt.bz2 meldet das System umgehend die erste Fundstelle der Diskrepanz mitsamt Zeilennummer und Byte-Position:

Fragt man an dieser Stelle den Beendigungsstatus mit echo "Exit Code: $?" ab, signalisiert ein Status ungleich Null, dass der Vergleich zwar fehlerfrei abgearbeitet wurde, jedoch eine inhaltliche Differenz vorliegt:

Benötigen Sie eine lückenlose Aufstellung sämtlicher differierender Stellen, schalten Sie die Option -l hinzu: bzcmp -l sample1.txt.bz2 sample3.txt.bz2.
Analog zur Funktionsweise von cmp -l listet das Terminal den dezimalen Byte-Offset auf, gefolgt von den jeweiligen Oktalwerten der voneinander abweichenden Zeichen beider Dateien:

Cross-Check zwischen Archiv und Plaintext sowie Bereinigung
Ein enormer Vorzug des Werkzeugs liegt im hybriden Modus: bzcmp sample1.txt.bz2 sample1.txt vergleicht ein komprimiertes Archiv direkt mit einer regulären Textdatei.
Stimmen die Daten überein, bleibt die Konsole auch hier stumm:

Liegt hingegen ein inhaltlicher Unterschied zur Klartextdatei vor, fängt das Tool diesen sofort ab – demonstriert am Einzeiler echo 'Different text' > sample_diff.txt && bzcmp sample1.txt.bz2 sample_diff.txt:

Zum Abschluss entfernen wir sämtliche temporär angelegten Testdaten und Archive mit rm -f sample1.txt sample2.txt sample3.txt sample*.bz2 sample_diff.txt, um den Ausgangszustand wiederherzustellen:

Mit bzcmp steht Linux-Administratoren ein schlankes, ressourcenschonendes Werkzeug zur Verfügung. Gerade bei umfangreichen Logdateien oder Backup-Prüfungen erspart dieser Workflow überflüssige I/O-Last und wertvollen Festplattenspeicher.