Hoe houdt u een of meer directorystructuren op twee willekeurige servers identiek? Replicatie? Synchronisatie? Back-uppen? Het kan allemaal met de opensource synchronisatiesoftware Unison.

R eplicatie is het in real-time gelijk houden van twee computersystemen. Daartoe maken we van één systeem de meester en van het tweede de slaaf. Alle bewerkingen die data op de meester veranderen, voeren we ook uit op de slaaf. Gewoonlijk veronderstelt replicatie dat u van start gaat met twee gelijke systemen en dat ze vanaf dat ogenblik gelijk gehouden moeten worden.

Synchronisatie is het gelijk maken van twee systemen of datapaden die dat nog niet zijn. Dat gebeurt gewoonlijk niet in real-time. Het kan immers om een wat omvangrijker en dus langduriger operatie gaan. Bij synchronisatie kunt u ook kiezen in welke richting die duplicatie moet gaan: er is dus niet noodzakelijk sprake van een meester en slaaf, maar van twee gelijkwaardige systemen.

Unison en Harmony

Benjamin C. Pierce is professor aan de afdeling computer- en informatiewetenschappen van de Amerikaanse universiteit van Pennsylvania. Hij legt zich toe op bestanden- en datasynchronisatie. Uit die interesse vloeiden twee projecten voort, allebei open source. Unison is bestandensynchronisatie-software. Dat project is stopgezet en wordt niet meer onderhouden, maar van tijd tot tijd brengt Pierce toch nog kleine updates uit. De reden voor het stopzetten van Unison heeft te maken met de verschuiving van de aandacht van Pierce naar datasynchronisatie in het algemeen. Zo ontstond het project Harmony, dat XML-data synchroniseert. Pierce ontwikkelde unieke synchronisatiealgoritmes, die hun oorsprong hebben in het Unison-project.

Ook al is Unison officieel stopgezet, we wilden het u toch even voorstellen. De noodzaak tot het synchroniseren of gelijkmaken van twee bestandenstructuren is iets wat al jarenlang voorkomt in bedrijven. Dat kan gaan om het gelijkmaken van twee directory’s of twee directorybomen op een of meer systemen. Dat hoeven niet eens gelijke systemen te zijn. Een voorbeeld is het synchroon houden van de websites op twee webservers: een is Apache onder Linux, de ander Apache onder Windows. Zoiets kan dus perfect gesynchroniseerd worden. Unison doet dit voor u. Naar wens kunt u het als broncode downloaden, of als uitvoerbaar bestand. De uitvoerbare versie is beschikbaar voor allerlei platformen, waaronder ook Linux en Windows. Naar keuze krijgt u voor die twee een opdrachtregelvariant of een met een GUI (grafische gebruikersinterface).

Werking

De installatie van de Windows-versie van Unison vraagt voor de GUI-variant de ondersteuning van de GTK-bibliotheken. De DLL’s daarvan staan echter niet in het bibliotheekpad van Windows. Daardoor klagen programma’s die ze nodig hebben, zoals Unison, dat ze die DLL’s niet vinden. We moesten daar dus manueel een oplossing voor aanmaken. Daarna werkte het wel. Het is duidelijk dat Unison van oorsprong ontwikkeld werd voor Linux en andere Unix-achtigen. Voor de Windows-versie wordt gewoon de downloadlink voor de GTK-bibliotheek op een site van derden opgegeven, maar kennelijk heeft niemand die installatie effectief gecontroleerd. Daar houdt u dus bij voorkeur rekening mee als u de Windows-versie wil uitproberen. Het interessante van die grafische interface op basis van GTK is natuurlijk, dat u net dezelfde GUI krijgt onder Windows als onder Linux.

We houden het hier even bij de versie met grafische interface. Unison vraagt twee directory- of netwerkpaden die gesynchroniseerd moeten worden. Daarna toont het programma van de hele directoryboom een overzicht van de verschillen. U kunt dan kiezen of er van links naar rechts of van rechts naar links gepropageerd moet worden. (Synchronisatie van de meester links naar de slaaf rechts, of van de meester rechts naar de slaaf links.) Er is ook een optie ‘merge’ (bundelen) die voor de non-destructieve tweewegduplicatie zorgt. U kunt per directory andere opties kiezen als u dat wenst. Er zijn heel wat opties om conflicten op te lossen of om wijzigingen te verplichten. Paden kunnen genegeerd worden en bestanden in directory’s gesorteerd.

Oordeel

We konden zo direct niets vinden waarin Unison tekortschiet. De aangenaamste verrassing was de werkingssnelheid. Unison gaat tegen een rotvaart door de directorybomen heen. Het weet in een mum van tijd een overzicht met verschillen te presenteren. Het synchronisatieproces daarna gaat ook al razendsnel. Voor een volgende keer kunt u een eenvoudige optie “detecteer updates en ga verder zonder wachten” kiezen, die de vorige synchronisatie herhaalt. Uiteraard kunt u dit ook allemaal automatiseren zodat dit zonder enige menselijke tussenkomst uitgevoerd kan worden. U kunt een synchronisatieconfiguratie als een Unison-profiel bewaren en dan bij een volgende uitvoering kiezen welk profiel u wil hanteren. En met de opdrachtregelvariant kunt u syn-chronisaties vanuit scripts uitvoeren.

Conclusie

Unison is ontwikkeld voor Unix-achtigen en voor de Windows-versie betekent dit dat er een GTK-bibliotheek voor nodig is waarvan de installatie enige problemen met zich meebrengt, maar dat doet natuurlijk niets af aan de bruikbaarheid van Unison als synchronisatiesoftware. Het werkt erg eenvoudig, snel en is gewoon steengoed. Jammer dat de ontwikkeling is stopgezet, maar als u een goed synchronisatieprogramma zoekt, probeer het dan beslist een keer. De broncode is beschikbaar en kan dus ook nog worden verbeterd of aangepast waar nodig.

GTK-bibliotheken: www.gtk.org/download.html

Prof. Pierce: www.cis.upenn.edu/~bcpierce

Johan Zwiekhorst

Fout opgemerkt of meer nieuws? Meld het hier

Partner Content