Copier un fichier sur une liaison lente gaspille tout ce que les deux machines partagent déjà. La compression n'aide que d'un facteur deux à quatre, et les outils de diff ordinaires exigent que les deux fichiers soient sur la même machine, ce que la liaison rend précisément impossible.

Andrew Tridgell et Paul Mackerras ont résolu le problème en 1996 avec un diff distant : le récepteur découpe son fichier en blocs, envoie les sommes de contrôle de chaque bloc, et l'émetteur, en une seule passe, détermine lesquels de ses propres blocs correspondent à n'importe quel décalage, grâce à une somme de contrôle glissante assez peu coûteuse pour être calculée à chaque position d'octet. Seules les données non appariées et les références traversent le réseau.

La conception ne nécessite qu'un seul aller-retour, si bien que la latence compte à peine, et elle fonctionne correctement même lorsque les fichiers sont assez différents. Tridgell a annoncé l'outil le 19 juin 1996 comme remplacement de rcp avec cet algorithme de mise à jour distante, ainsi qu'un pipeline qui fait chevaucher communication et calcul.

Calculer le diff à distance : envoyer des sommes de contrôle, pas le contenu

Les sommes de contrôle glissantes permettent à l'émetteur de parcourir chaque décalage à faible coût

Un seul aller-retour le rend rapide même sur les liaisons à forte latence

Des sommes de contrôle fortes confirment les correspondances faibles avant que les données ne circulent

L'envoi des seuls blocs non appariés économise de la bande passante proportionnellement à la similarité

Quand la bande passante est rare et que les fichiers se recoupent, envoyer des preuves, pas des données : les sommes de contrôle glissantes révèlent ce qui existe déjà à l'autre extrémité sans qu'il soit nécessaire de réunir les deux fichiers au même endroit.

rsync est devenu l'outil Unix standard pour les sauvegardes, les miroirs et la distribution de logiciels, et son diff par sommes de contrôle de blocs reste le cœur de l'outil aujourd'hui. Le rapport de 1996 est toujours la référence citée pour l'algorithme, et la conception en un seul aller-retour a influencé les systèmes de synchronisation ultérieurs.

VÉRIFIEZ LES SOURCES

Les sources

  1. The rsync algorithm (TR-CS-96-05) Australian National University · openresearch-repository.anu.edu.au
  2. First release of rsync - rcp replacement (announcement) LWN.net archive · static.lwn.net ·