RSYNC, ook wel bekend als “remote sync”, is een open-source software-applicatie die wordt gebruikt voor het synchroniseren van bestanden en mappen op verschillende locaties binnen een netwerk of tussen verschillende computers. Het belangrijkste doel van RSYNC is het minimaliseren van gegevensgebruik door alleen die delen van bestanden naar het bestandssysteem op de bestemming te sturen die zijn gewijzigd aan de bronkant.
RSYNC vergelijkt bestanden om wijzigingen te detecteren op basis van het checksum-algoritme en de update-tijdsstempel van het bestand. Wanneer RSYNC wordt uitgevoerd, controleert het de bestaande bestandsinhoud op de ontvangende zijde en de inhoud die moet worden overgedragen van de verzendende zijde. Dit doet het door checksums (een soort digitale handtekening) te berekenen voor elk blok van elk bestand. Deze checksums worden vervolgens vergeleken om te bepalen welke delen van de bestandsinhoud verschillen.
RSYNC maakt gebruik van de ‘rolling checksum’- en ‘MD5’-algoritmes om deze taak uit te voeren. Het rolling checksum-algoritme wordt gebruikt om de gegevens in blokken op te delen en voor elk blok een unieke checksum te genereren. Het MD5-algoritme wordt vervolgens gebruikt om een tweede, sterkere checksum te genereren. Deze checksums worden vervolgens vergeleken om de wijzigingen in de bestanden te bepalen.
Het belangrijkste voordeel van deze aanpak is dat het de hoeveelheid gegevens die over het netwerk moeten worden overgedragen, aanzienlijk vermindert, omdat alleen de delen van bestanden die zijn gewijzigd, worden verzonden.
Bovendien is RSYNC ook in staat om harde links, bestandsrechten, gebruikers- en groepseigendom en tijdsstempels te behouden tijdens het kopiëren van bestanden en directories.
Daarnaast kan RSYNC ook “delta-encoding” gebruiken, wat betekent dat als slechts een klein gedeelte van een bestand is veranderd, dan wordt alleen dat kleinere gedeelte overgedragen.
De technieken die RSYNC gebruikt zijn gedetailleerd beschreven in het wetenschappelijk paper “The rsync algorithm” door Andrew Tridgell en Paul Mackerras.
Bronnen:
1. Tridgell, A., Mackerras, P. (1996). The rsync algorithm. Technical report TR-CS-96-05. The Australian National University.
2. Pool, J.D., Greenan, K.M., Plank, J.S., Miller, E.L. (2006). The method of differential compression applied to large scientific datasets. The Journal of Supercomputing, 31(2), 133-152.
3. Rsync man page: https://linux.die.net/man/1/rsync