File Deltas

Status
Nicht offen für weitere Antworten.

sco

Mitglied
Hi, mir gehts da um ne Effizienzfrage in hinsicht von Datentraffic.

Ich suche nach einem Algorithmus/eine Api, der/die folgende Anforderungen erfüllt:
- es sollen zwei Dateien binär untersucht werden können
- eine der Dateien ist ein wenig älter als die andere - es soll eine Delta-Datei errechnet werden, mit der man ältere in die neuere überführen kann
- diese Delta-Datei soll möglichst klein sein - mir geht es um Traffic
- der Algorithmus dafür darf durchaus hohe Anforderungen an Speicher und CPU legen, wenn es sein muss
- zwei Delta-Dateien sollen optimiert zusammenführbar sein, dh defacto:
1. datei_uralt + deltaA = 2. datei_auch_alt
2. datei_auch_alt + deltaB = 3. aktuelle_datei
aber:
1. datei_uralt + deltaAB = 3. aktuelle_datei

letzterer Punkt muss nicht unbedingt erfüllt werden, mir gehts erstmal überhaupt um nen Ansatz, der besser ist, als ein einfaches bitweises durchlaufen beider Dateien und Unterschiede aufzeichnen - würde auch eine entsprechende API verwenden, wenn eine Open-Source existiert.

Vielen Dank schonmal
sco
 

Wildcard

Top Contributor
Spontan fällt mir da nur VCDIFF ein.
Ein Blick in diff könnte auch nicht schaden, da diff ja auch mit Binärdaten umgehen kann.
 

kama

Top Contributor
Hallo,

ich würde mir mal rsync anschauen und vor allem der entsprechende Hintergrund zu rsync.

http://rsync.samba.org/

Weiterhin würde ich mir mal subversion.tigris.org anschauen, da wird auch ein Diff verwendet, dass mit binär Dateien umgehen kann und es wird auch "nur" der jeweilige Delta transferiert. Das mit dem Zusammenführen von binären Dateien wird nich ganz so trivial.

MfG
Karl Heinz Marbaise
 

sco

Mitglied
Macht nix, wenns nicht trivial ist - irgendwie gewöhnt man sich dran ^^

Subversion nutze ich seit ner ganzen Weile selbst.
Es ist halt schon nicht trivial aus Quellcode von jemand anderem nen Algorithmus zu ziehen - aber nachdem ich mir alles angesehen hab, werd ich mich genauer mit den Quellen von diff (der Unix-Befehl) - hab ich C-Quellen nu - und mit rsync befassen und dann sehen, was mir eher passt.

Versteh ich den Algorithmus, dann werd ich nen Weg finden, wie ich das hinbekomme mit dem zusammenführen zweier Datei-Deltas. Mein Ansatz war eben inspiriert durch Sorcerer Linux, die früher beim Quellenupdate auch File-Deltas verwendeten - Zielsetzung ist es, einen multipurpose Auto-Updater in Java zu schreiben, der ohne zusätzliche Installation von Hilfspaketen auskommt am Ende, weil ich das dem Nutzer nicht zumuten möchte.

Denke, dass ich das mit euren Hinweisen nun eleganter lösen werde, deshalb:
Vielen Dank
sco
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben