Startseite>Mit Diff Unterschiede in Dateien aufspüren
Aus Raspberry Pi Geek 06/2020

Mit Diff Unterschiede in Dateien aufspüren (Seite 2)

Abbildung 6: Difference hilft Ihnen dabei, Zeichenketten auf die Schnelle zu vergleichen.

Abbildung 6: Difference hilft Ihnen dabei, Zeichenketten auf die Schnelle zu vergleichen.

Um dieses Programm in ein Skript einzubinden, bietet sich der Befehl wc zum Auswerten des Ergebnisses an. Listing 5 zeigt ein sehr reduziertes Beispiel; Abbildung 7 gibt einen Eindruck vom Ablauf des Skripts.

Listing 5

#! /bin/bash
# Minimalistischer Zeichenkettenvergleich
read -p "1. Eingabe: " a
read -p "2. Eingabe: " b
c=$(difference $a $b | wc -w)
if [ $c -eq 1 ]; then
  echo "Beide Eingaben sind identisch"
elif [ $c -gt 1 ]; then
  echo "Die Eingaben unterscheiden sich"
fi
Abbildung 7: Der Vergleich von zwei Zeichenketten ist eine Aufgabe, die Sie mit dem Tool Difference auf vergleichsweise einfache Weise erledigen.

Abbildung 7: Der Vergleich von zwei Zeichenketten ist eine Aufgabe, die Sie mit dem Tool Difference auf vergleichsweise einfache Weise erledigen.

Mehr Komfort

Etwas mehr Komfort bietet das Programm Icdiff. Beim Vergleich zweier Textdateien hebt es Unterschiede farblich hervor, beim Vergleich zweier Verzeichnisse erhalten Sie eine Liste mit den Unterschieden.

Wenn Sie die Ergebnisse von Icdiff in einem Shell-Skript auswerten möchten, benötigen Sie eine Kombination aus mehreren Tools, die Sie über eine Pipe verbinden. Abbildung 8 zeigt den Vergleich von Dateien und Verzeichnissen, jeweils abweichend und übereinstimmend.

Abbildung 8: Icdiff bringt beim Vergleich von Dateien und Verzeichnissen Farbe ins Spiel.

Abbildung 8: Icdiff bringt beim Vergleich von Dateien und Verzeichnissen Farbe ins Spiel.

Auf anderen Rechnern

Der Vergleich von Text- und Binärdateien, die sich auf verschiedenen Rechnern befinden oder verschiedenen Benutzern auf einem System gehören, erfordert ein etwas anderes Handwerkszeug: Ssh-diff versteht die von Diff bekannten Optionen mit Ausnahme von -r.

Für den Aufbau der Verbindung dürfen Sie außerdem einen abweichenden Port beim Zielsystem angeben, und bei Bedarf beschränken Sie die Kommunikation auf IPv4 oder IPv6. Das Kennwort geben Sie doppelt ein, es sei denn, Sie arbeiten mit einer Authentifizierung, die auf passwortlosen Schlüsseln basiert.

Beim Vergleich von Binärdateien liefert Ssh-diff die Meldung, dass sich die Dateien unterscheiden. Abbildung 9 zeigt den Vergleich einer Textdatei. Im ersten Anlauf kommen in dem Beispiel zwei unterschiedliche, im zweiten zwei identische Dateien zum Einsatz.

Abbildung 9: Beim Vergleich mit Ssh-diff brauchen die Dateien nicht auf demselben Rechner zu liegen. Das Tool setzt aber SSH als Grundlage voraus.

Abbildung 9: Beim Vergleich mit Ssh-diff brauchen die Dateien nicht auf demselben Rechner zu liegen. Das Tool setzt aber SSH als Grundlage voraus.

PDF-Dateien

Für den Vergleich zweier PDF-Dateien per Shell eignet sich Comparepdf. Die Tabelle “Comparepdf-Optionen” zeigt die wenigen Optionen des Werkzeugs. Bei Gleichheit lautet der Exit-Code 0, andernfalls ist er größer null. Ein entsprechender Vergleich würde zwar auch mit Diff und Duff klappen, fiele aber komplexer aus.

Option

Aktion

-ct

Text vergleichen (Standard)

-ca

grafischer Vergleich (für Scans)

-v=0

Ausgabe im Terminal unterdrücken

-v=1

Ausgabe bei Unterschied

-v=2

vollständige Ergebnisse anzeigen

Abbildung 10 zeigt den Einsatz von Comparepdf in der Shell. Durch den eindeutigen Exit-Code benötigen Sie keine Werkzeuge, um in einem Shell-Skript das Ergebnis tiefer auszuwerten.

Abbildung 10: PDF-Dateien mit <code>comparepdf</code> vergleichen.

Abbildung 10: PDF-Dateien mit comparepdf vergleichen.

Möchten Sie die Unterschiede zwischen zwei PDF-Dateien am Bildschirm sehen, greifen Sie zu Diffpdf. Abbildung 11 zeigt einen Vergleich, bei dem Unterschiede zutage treten. Bei identischen PDF-Dateien erscheint anstelle des Texts nur in jedem Dateifenster der Hinweis, dass die Dateien identisch sind.

Abbildung 11: Diffpdf stellt unterschiedliche PDF-Dateien dar.

Abbildung 11: Diffpdf stellt unterschiedliche PDF-Dateien dar.

Bilder vergleichen

Bei Bildern helfen die bisher beschriebenen Werkzeuge nur bedingt weiter, da es sich um Binärdateien handelt. Benötigen Sie innerhalb eines Skripts einen entsprechenden Exit-Code, ist das Prüfen gegen eine Checksumme praktikabler.

Sind Hinweise auf die Änderungen selbst von Interesse, hilft Ihnen Diffimg weiter. Das Programm verarbeitet Bilddateien in den Formaten PNG, GIF und JPEG. Postscript-Dateien bearbeiten Sie unter Zuhilfenahme von Ghostscript. Es gibt keine Optionen, die Syntax fällt recht einfach aus (Listing 6).

Listing 6

$ diffimg Datei1 Datei2 Differenzbild

Wenn Sie das Differenzbild öffnen, finden Sie die abweichenden Pixel angezeigt. So decken Sie etwas subtile Änderungen auf, wie etwa im Beispiel aus Abbildung 12: Dort ist die Nummer der Lokomotive im RHB-Bahnhof Guarda (Graubünden) im mittleren Bild mit der Hintergrundfarbe des Zugs überpinselt. Das Ergebnis mit der Gegenüberstellung sehen Sie links. Stimmen beide Dateien überein, erhalten Sie eine vollständig schwarze Ausgabedatei, Änderungen finden Sie lagerichtig als weiße Pixel.

Abbildung 12: Links sehen Sie das Original, in der Mitte das bearbeitete Bild, rechts die Ausgabe der Differenzen der beiden Bilder, wobei die hellen Pixel die Lage der &Auml;nderungen anzeigen.

Abbildung 12: Links sehen Sie das Original, in der Mitte das bearbeitete Bild, rechts die Ausgabe der Differenzen der beiden Bilder, wobei die hellen Pixel die Lage der Änderungen anzeigen.

Steganografische Bilder, also solche, die eine versteckte Nachricht beinhalten, weisen als Differenz willkürliche, einzelne Pixel über die gesamte sonst schwarze Fläche des Differenzbilds auf. Das Verschlüsselungsrätsel selbst lösen Sie damit allerdings nicht. Daher ist es beim Gebrauch von Steganografie wichtig, die Originaldateien zum einen selbst zu erstellen und zum anderen nach dem Einsatz als Träger sicher zu löschen, um einen Vergleich auszuschließen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 8 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland