RSYNC ist ein leistungsfähiges Tool in Unix- und Linux-Systemen, das zur Synchronisation von Dateien und Verzeichnissen zwischen verschiedenen Standorten verwendet wird. RSYNC vergleicht Dateien, um festzustellen, ob Änderungen in den Dateien vorgenommen wurden, indem es eine Reihe von Algorithmen und Techniken verwendet. Denn RSYNC ist effizient, indem es nur den Unterschied in den Dateien überträgt, anstatt die gesamte Datei wieder zu senden, wenn nur ein kleiner Teil der Datei geändert wurde.
RSYNC verwendet zu allererst tatsächlich Datei-Metadaten, um Änderungen zu erkennen. Es vergleicht Eigenschaften wie Dateigröße und Modifikationszeitpunkt (diese Wertpaare sind in der Inode der Datei gespeichert). Wenn diese Werte unterschiedlich sind, wäre das ein Indikator dafür, dass die Datei geändert wurde.
Zusätzlich zu diesem grundlegenden Vergleich verwendet RSYNC auch eine ausgefeiltere Prüfsummen-Technik zur Erkennung von Änderungen. Dies geschieht mithilfe eines Zwei-Phasen-Algorithmus. Zunächst wird eine schlanke, schnelle Prüfsumme für jedes Blockpaar in beiden Dateien erzeugt. Wenn diese Übereinstimmen, wird angenommen, dass der Block identisch ist. Falls nicht, wird eine weitere, stärkere Prüfsumme erzeugt, um zu überprüfen, ob der Block tatsächlich geändert wurde.
Zum Beispiel könnte eine Datei in die Blöcke A, B und C aufgeteilt sein, und eine Änderung wurde vorgenommen, um Block B in B’ zu ändern. RSYNC erstellt dann Prüfsummen für A, B und C an beiden Orten. Es bemerkt, dass die Prüfsumme für B und B’ unterschiedlich ist, so dass nur B’ an den anderen Ort übertragen werden muss und die Blöcke A und C neu angeordnet werden, um die Datei zu rekonstruieren.
Diese Techniken ermöglichen RSYNC eine effiziente Dateisynchronisation, indem sie nur die geänderten Teile der Datei überträgt und so Bandbreite und Zeit spart.
Für weitere Details zu diesen Prozessen ist die RSYNC-Manual-Seite (https://linux.die.net/man/1/rsync) eine verlässliche Quelle. Es gibt auch eine Veröffentlichung von Andrew Tridgell und Paul Mackerras, “The rsync algorithm”, die einen detaillierten Einblick in den Algorithmus von RSYNC bietet. Tridgell ist einer der ursprünglichen Entwickler von RSYNC.