2009-10-08 13 views
6

Sto cercando di capire come funziona the rsync algorithm rispetto ai checksum e ai blocchi che ruotano in modo sfalsato.checksum in rotazione nell'algoritmo rsync

La pagina di wikipedia sembra suggerire che il mittente e il destinatario calcolano e scambiano i checksum in rotazione per tutti i possibili blocchi. Ma ciò significherebbe inviare essenzialmente un checksum per byte! Devo mancare qualcosa. Come funziona essere in grado di allineare i blocchi?

ad es. se S = 16 blocchi di byte, e il mittente ha questo testo per il file A:

Il quick brown fox salta sopra le cani pigri

e il ricevitore ha questo testo per il file B:

il quick brown fox saltato sopra il cane pigro

come sarebbe un rsyn c lavoro di scambio?

risposta

14

Il ricevitore calcola e invia checksum di rotazione solo per blocchi non sovrapposti. Il mittente, al contrario, lo calcola per ogni possibile blocco (ma mantiene il risultato locale). Quindi per il mittente, è solo una questione di verificare se uno dei blocchi non sovrapposti (inviati dal ricevitore) corrisponde a qualsiasi blocco locale (sovrapposto).

L'esempio è troppo semplice per vedere qualcosa di interessante, i due ultimi blocchi semplicemente non corrispondono e verranno inviati per la fusione.

Con un esempio più interessante (maiuscolo è un blocco):

mittente:

A B Cabc D 

ricevitore:

A B C D 

Il ricevitore invierà il MD5 e hash rotolamento per A, B, C e D. Il mittente calcolerà l'hash rolling per ogni blocco (sovrapposto), corrisponderà per A, per B, per C e per D. Poiché abc non corrisponde, lo invierà con le informazioni su dove unirlo.

+0

oh, devo aver letto male il bit sul ricevitore che non inviava tutti i checksum. Grazie. –