Forum: PC-Programmierung Dateien Synchronisieren


von A. B. (funky)


Lesenswert?

Hallo,

mal ne Frage:

Bei Programmen wie Dropbox, welche Dateien Blockweise übertragen(sprich 
ich mache eine Änderung im File, es wird nicht alles übertragen sondern 
nur der geänderte Block der Datei) weiss jemand wie so ein Algorithmus 
grob funktioniert?

Ich stelle mir das ganze so vor:
Änderung an Datei auf Client wird erkannt, man unterteilt das file in 
blöcke für die man den Hash berechnet, und vergleicht.
Wenn man eine Textdatei mittendrin editiert, leuchtet mir das noch 
ein...man beginnt am Dateianfang, irgendwann stimmt der Hash nicht 
überein für einen Block, ich übertrage den Block wobei man dann noch 
irgendwie die Länge bestimmen muss, welcher Teil übertragen wird.


Wo das ganze aber nicht funktioniert, ist wenn ich den Anfang der Datei 
ändere.
Angenommen ich habe zwei Files, Lösche in einem die ersten 5 Bytes und 
berechne dann die Blöcke für den Hash. Dann werden ja nie mehr 
identische Blöcke festgestellt?
Weis jemand wie das gelöst?
Also es geht nicht darum die Änderung zu erkennen, sondern es so zu 
erkennen das nicht das gesamte File übertragen werden muss.

Oder ist das mithilfe einer Datenbank implementiert? Bei Dropbox scheint 
da ja etwas im Hintegrund zu laufen, da man alte Files anzeigen kann.

Weiss jemand mehr?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Vermutlich wird ein ähnliches Verfahren wie bei Rsync angewendet:

- http://de.wikipedia.org/wiki/Rsync#Funktionsweise

- http://rsync.samba.org/tech_report/node4.html

von A. B. (funky)


Lesenswert?

ah...danke...rsync hatte ich nicht auf dem Plan. Ich schau mir das mal 
an

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.