2009-10-08 6 views
6

Estoy tratando de comprender cómo funciona the rsync algorithm con respecto a las sumas de comprobación progresivas y los bloques que coinciden de forma escalonada.sumas de comprobación progresivas en el algoritmo de rsync

La página de wikipedia parece sugerir que el emisor y el receptor calculan e intercambian sumas de comprobación para todos los bloques posibles. ¡Pero eso significaría enviar esencialmente una suma de comprobación por byte! Debo estar perdiendo algo. ¿Cómo funciona para poder alinear bloques?

p. Ej. si S = 16 bloques de bytes, y el remitente tiene este texto para el archivo A:

El rápido zorro marrón salta sobre los perros perezosos

y el receptor tiene este texto para el archivo B:

el rápido zorro marrón saltó sobre el perro perezoso

cómo sería un RSYN c trabajo de intercambio?

Respuesta

14

El receptor calcula y envía sumas de verificación progresivas solo para bloques que no se superponen. El emisor, por el contrario, lo calcula por cada posible bloque (pero mantenga el resultado local). Luego, para el emisor, solo es cuestión de verificar si uno de los bloques que no se superponen (enviado por el receptor) coincide con con cualquier bloque local (superpuesto).

Su ejemplo es demasiado simple para ver algo interesante, los dos últimos bloques simplemente no coincidirán y se enviarán para la fusión.

Con un ejemplo más interesante (en mayúsculas es un bloque):

remitente:

A B Cabc D 

receptor:

A B C D 

El receptor enviará el MD5 y el hash del balanceo por A, B, C y D. El emisor calculará el hash rodante para cada bloque (superpuesto), coincidirá para A, para B, para C y para D. Dado que abc no concuerda, lo enviará con la información sobre dónde fusionarlo.

+0

oh, debo haber leído mal el bit sobre el receptor que no envía todas las sumas de comprobación. Gracias. –

Cuestiones relacionadas