Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Naar inhoud springen

rsync

Uit Wikipedia, de vrije encyclopedie
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] Bewerken op Wikidata
Status Actief
Besturingssysteem Windows en Unix-achtig
Geschreven in C
Categorie Gegevensoverdracht
Licentie(s) GPLv3
Versiebeheer Officiële broncode
Website (en) Website van rsync
Portaal  Portaalicoon   Informatica
Vrije software

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.

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.