Rsync
rsync | ||||
---|---|---|---|---|
Ontwikkelaar(s) | Oorspronkelijk: Andrew Tridgell, Paul Mackerras Huidig: Wayne Davison | |||
Uitgebracht | 19 juni 1996 (28 jaar) | |||
Recentste versie | 3.3.0 (6 april 2024)[1] ![]() | |||
Status | Actief | |||
Besturingssysteem | Windows en Unix-achtig | |||
Geschreven in | C | |||
Categorie | Gegevensoverdracht | |||
Licentie(s) | GPLv3 | |||
Versiebeheer | Officiële broncode | |||
Website | (en) Website van rsync | |||
|
Rsync is een computerprogramma dat bestanden en directory's synchroniseert van de ene computer naar de andere. Daarbij is het mogelijk gegevens te verzenden door, als de doelcomputer al een andere versie van dat bestand heeft staan, alleen het verschil (de delta) te versturen. Hiervoor hoeft het, in tegenstelling tot de meeste vergelijkbare programma's en algoritmes, maar één gegevensstroom per richting te versturen.
Rsync kan directoryinhoud tonen en directory's en bestanden kopiëren, naar keuze met gegevenscompressie en recursie, en is daardoor goed geschikt om bestanden en hele directorybomen te synchroniseren.
Voor gebruik over UDP en TCP gebruikt rsync als standaard poortnummer 873.
Algoritme
Rsync gebruikt een algoritme, uitgevonden door de Australische computerprogrammeur Andrew Tridgell, om een bestand efficiënt te versturen wanneer de ontvangende computer al een andere versie van dat bestand heeft.
De ontvanger deelt zijn exemplaar van het bestand op in elkaar niet overlappende blokken van vaste lengte, zeg , en berekent twee checksums voor elk blok: de MD5-hash, en een zwakkere "doorrollende" checksum. Beide stuurt hij op naar de verzender.
De verzender berekent de doorrollende checksum voor elk blok van lengte , dus ook voor overlappende blokken. Dit kan efficiënt vanwege een eigenschap van deze checksum: als de checksum van de bytes met nummer tot en met gelijk is aan , is het eenvoudig om de checksum van bytes tot en met te berekenen zonder te kijken naar de tussenliggende bytes. Dus als je al de checksum van bytes 1–25 hebt, kan je de checksum van bytes 2–26 berekenen uit alleen de vorige checksum en de waarde van de bytes 1 en 26.
De verzender vergelijkt zijn rollende checksums vervolgens met de serie die de ontvanger heeft verstuurd, en bepaalt of er overeenkomsten zijn. Als dat zo is, verifieert hij de treffer door de MD5 te berekenen voor dat blok, en dat te vergelijken met de MD5 die de ontvanger had gestuurd.
De verzender hoeft nu alleen nog maar die delen van het bestand te versturen die niet overeenkomen met een blok dat de ontvanger al heeft, plus "montage-instructies" die aangeven waar de ontvanger die delen moet invoegen, en welke delen van zijn eigen bestand die moet schrappen om een bestand te krijgen dat identiek is aan dat van de verzender.
Hoe meer overeenkomsten tussen beide bestanden, hoe minder gegevens er verstuurd hoeven worden.
Zie ook
Externe link
- (en) Projectpagina
- ↑ NEWS for rsync 3.3.0 (6 Apr 2024) (6 april 2024). Geraadpleegd op 7 april 2024.