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 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.
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 Ä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.
Differenzen einpflegen
Beim Übertragen von Dateien brauchen Sie nicht zwingend den gesamten Inhalt zu übermitteln, wenn frühere Versionen am Ziel bereits vorliegen. Egal, ob Manuskript oder Quelltext: Es genügt, die Differenz zu finden und diese zu transferieren.
Mit vielen Programmen, meist aber mit Diff, erstellen Sie eine Datei mit den Patch-Anweisungen, um Änderungen einzuspielen. Mit der Anweisung aus der ersten Zeile von Listing 7 erstellen Sie eine Patch-Datei, deren Inhalt für unser Beispiel Listing 8 zeigt.
Listing 7
$ diff -uNr Alter_Stand Neuer_Stand > Patch-Datei $ patch -b Alter_Stand < Patch-Datei
Listing 8
--- 1.txt 2019-11-09 08:59:06.000000000 +0100 +++ 2.txt 2019-11-09 08:59:13.000000000 +0100 @@ -1,4 +1,4 @@ Das ist eine Textdatei. Sie besteht aus drei Zeilen! -abcDEF +ABCdef
Damit sind die Dateinamen und die enthaltenen Änderungen bekannt. Sie spielen die Daten mit dem Kommando aus der zweiten Zeile von Listing 7 ein. Mit der Option -b sichern Sie dabei die Originaldatei vor dem Patch. Abbildung 13 zeigt das Anfertigen der Patch-Datei.

Abbildung 13: Gerade bei Quellcode ist es sinnvoll, lediglich die Differenzen zu einer früheren Datei als sogenannten Patch bereitzustellen. Dessen Größe ist meist weitaus geringer, was beim Übertragen übers Netz Vorteile bringt.
Abbildung 14 zeigt das Einspielen des Patches und das Ergebnis. Dabei fragt die Software ab, ob Sie die neuere Datei bearbeiten möchten.

Abbildung 14: Das Einspielen eines Patches gelingt im Handumdrehen.
Auch das Patchen von Verzeichnissen gelingt bei Bedarf. Dazu erstellen Sie mittels Diff eine Datei mit den Unterschieden, die Sie mit Patch wieder einspielen.





