2012-11-16 11 views
5

In Linux gibt es eine Möglichkeit, die Unterschiede zwischen zwei Binärdateien (d. H. Zwei ausführbare Dateien) zu berechnen?Wie berechnet man Unterschiede zwischen zwei Binärdateien (d. H. Zwei ausführbare Dateien) in Linux

Lassen Sie mich genauer sein: Ich möchte wissen, wie man das Delta (Delta-Unterschied) zwischen zwei Versionen einer ausführbaren Datei oder einer Anwendung oder Software in Linux berechnet. Zum Beispiel, wenn ich nur den aktualisierten Teil (der Delta-Unterschied zwischen der neuesten Version und der alten Version) einer existierenden Anwendung oder Binärdatei herunterladen und installieren muss, wie mache ich das in Linux.

+0

Der einfachste Weg könnte sein, den Quellcode zu vergleichen, wenn er für Sie verfügbar ist. –

+0

Hallo Basile, ich habe keine Möglichkeit, den Quellcode zu vergleichen, nur verfügbare Dinge sind die zwei Versionen einer binären, eine neueste Version und die andere ist die alte Version. – indranil

+0

Aber was können Sie mit dem Ergebnis des binären ausführbaren Vergleichs tun? Also warum fragst du wirklich ??? –

Antwort

2

diff wird Ihnen sagen, wenn die binären Dateien sind unterschiedlich:

diff bin1 bin2 
Binary files bin1 and bin2 differ 

Wenn Sie den Unterschied möchten, verwenden Sie cmp:

cmp -l bin1 bin2 
    25 20 320 
    26 4 3 
    41 270 160 
209 4 264 
210 7 6 

Die -l Option druckt die Byte-Zahl und den Unterschied:

-l --verbose 
     Output byte numbers and values of all differing bytes. 
0

cksum Versuchen - gibt den Hinweis, dass sie die gleiche

9

sind Sie das Tool verwenden können bsdiff, und es ist Begleiter bspatch, für eine effiziente diffs und Patches von Binär-Dateien zu tun.

Wenn Sie noch kleinere Patches erhalten möchten, können Sie sich Courgette von Google Chrome anschauen. Es ist auf bsdiff gebaut, aber sie bieten noch effektiver Diffs von ausführbaren Dateien, indem Sie sie tatsächlich auseinanderbauen, bevor Sie das diff ausführen. Es wird nicht als separates Projekt verteilt, aber Sie können es von der Chromium source repository (wie zu check out the code) bekommen.

Es gibt auch das xdelta Werkzeug, das schon länger als bsdiff ist. Laut dem Autor von bsdiff ist es erheblich weniger effizient; Patches sind viel größer. Es hat den Vorteil, dass es das Standard-VCDIFF-Format (RFC 3284) unterstützt, das auch von mehreren anderen Tools unterstützt wird. Wenn Sie also mit solchen anderen Tools arbeiten müssen, wäre es sinnvoller.

+0

Ein Vorbehalt: die OP-Embedded-Systeme (in den Tags), und die bsdiff Homepage sagt "bsdiff ist ziemlich Speicher hungrig" - ich hätte nie darüber nachgedacht. – loreb

+0

@loreb Der Teil, der speicherhungrig ist, ist der "diff" -Teil, in dem Sie das Delta erzeugen (im Allgemeinen auf einer Entwicklungs- oder Erstellungsmaschine). Der Patch-Teil hat viel vernünftigere Speicheranforderungen. –

+0

Es ist mir nicht einfallen, danke – loreb

-1

können Sie diff verwenden:

diff old_file new_file 

Sie auch md5 verwenden können, aber Sie haben zu den Ergebnissen zu vergleichen, als. Es könnte auch für die Überprüfung der Summe der heruntergeladenen Datei verwendet werden, wenn MD5 Checksumme verfügbar ist.

Verwandte Themen