09.07.2010 14:05:00

Binary Diffs mit rdiff

Das Problem

Nimmt man an einer Datei kleine Änderungen vor und möchte diese verbreiten, so reicht es normalerweise (im Fall von Textdateien), nur die Änderungen (diff) zu verteilen. Diese werden dann auf die Originaldateien angewendet (patch). Klassisch läuft das mit den gleichnamigen Unix-Werkzeugen diff und patch.

Handelt es sich um Binärdateien (im Beispiel die ausführbare Datei eines Computerspiels), versagen die beiden jedoch leider Ihren Dienst. Gesucht ist also ein Werkzeug, das

  1. binäre diffs erzeugen kann,
  2. binärdateien mittels der diff-Datei patchen kann und
  3. unter Windows läuft.

Die Lösung

Das Paket rdiff gibt es sowohl für Linux als auch für Windows (mittels cygwin, genaueres siehe unten). Es ist in der Lage, Unterschiede von zwei binären Dateien platzsparend zu speichern.

Bedienung von rdiff

Zunächst wird von der Ursprungsdatei eine sogenannte Signatur gebildet:

rdiff signature original original.sig

Dann wird die Differenz zwischen der neuen Datei und der Signatur ermittelt:

rdiff delta neu original.sig original_neu.rdiff

Um schließlich das Patch auf die Originaldatei anzuwenden, lautet der Aufruf:

rdiff patch original original_neu.rdiff

Somit benötigt man zum Patchen nur die Delta-Datei, was die Anforderung erfüllt.

rdiff unter Windows

Damit nicht gleich cygwin komplett installiert werden muß, kann man einzelne Komponenten nutzbar machen, indem man die benötigten exe- und dll-Dateien extrahiert. Für rdiff werden folgende Dateien benötigt:

  • rdiff.exe
  • cygrsync-1.dll
  • cygwin1.dll
  • cygpopt-0.dll

Posted by ingo | Permanent link | File under: tooltips, windows, fifa98, diff, cygwin