Eine Datei über eine langsame Verbindung zu kopieren, verschwendet alles, was beide Rechner bereits gemeinsam haben. Kompression hilft nur um einen Faktor von zwei bis vier, und gewöhnliche Diff-Werkzeuge benötigen beide Dateien auf derselben Maschine, was genau durch die Verbindung unmöglich gemacht wird.

Andrew Tridgell und Paul Mackerras lösten dies 1996 mit einem entfernten Diff: Der Empfänger teilt seine Datei in Blöcke auf, sendet Prüfsummen jedes Blocks, und der Sender ermittelt in einem Durchgang, welche seiner eigenen Blöcke an welcher Position übereinstimmen, wobei er eine rollierende Prüfsumme verwendet, die billig genug ist, um sie an jeder Byteposition zu berechnen. Nur nicht übereinstimmende Daten und Verweise gehen über die Leitung.

Das Design benötigt nur einen Roundtrip, sodass die Latenz kaum eine Rolle spielt, und es funktioniert auch dann korrekt, wenn die Dateien recht unterschiedlich sind. Tridgell kündigte das Werkzeug am 19. Juni 1996 als Ersatz für rcp mit diesem entfernten Aktualisierungsalgorithmus an, zusammen mit Pipelining, das Kommunikation und Berechnung überlappt.

Den Diff entfernt berechnen: Prüfsummen senden, nicht Inhalte

Rollierende Prüfsummen ermöglichen es dem Sender, jede Position kostengünstig zu durchsuchen

Ein Roundtrip macht es auch bei Verbindungen mit hoher Latenz schnell

Starke Prüfsummen bestätigen schwache Übereinstimmungen, bevor Daten übertragen werden

Nur nicht übereinstimmende Blöcke zu senden spart Bandbreite im Verhältnis zur Ähnlichkeit

Wenn Bandbreite knapp und Dateien einander ähnlich sind, sende Belege statt Daten: Rollierende Prüfsummen zeigen, was am fernen Ende bereits vorhanden ist, ohne dass beide Dateien an einem Ort sein müssen.

rsync wurde zum Standard-Unix-Werkzeug für Sicherungen, Spiegel und Softwareverteilung, und sein Block-Prüfsummen-Diff bildet bis heute den Kern des Werkzeugs. Der Bericht von 1996 ist noch immer die für den Algorithmus zitierte Referenz, und das Design mit einem Roundtrip beeinflusste spätere Synchronisierungssysteme.

DEN BELEGEN FOLGEN

Die Quellen

  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 ·