Hoe houd je een of meer directorystructuren op twee willekeurige servers identiek? Replicatie? Synchronisatie? Back-up? Het kan allemaal met de opensourcesynchronisatiesoftware Unison.
Replicatie is het in real-time gelijkhouden van twee computersystemen. Daarvoor maken we van één systeem de meester en van het tweede de slaaf. Alle bewerkingen die de data op de meester veranderen, worden ook uitgevoerd op de slaaf. Normaliter veronderstelt replicatie dat je 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. Bij synchronisatie kun je 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.
Drie manieren
Synchronisatie kan op drie verschillende manieren plaatsvinden:
-
Destructieve meester-slaafduplicatie. Bestanden die wel op systeem A maar niet op systeem B staan, worden gekopieerd naar B. Bestanden die wel op B maar niet op A voorkomen, worden gewist. A speelt hier meester en B is dan de slaaf.
-
Back-up. Bestanden die wel op systeem A staan maar niet op B voorkomen, worden gekopieerd naar B. Bestanden die wel op B staan maar niet op A voorkomen, worden genegeerd. A is hier weer meester of origineel en B is de slaaf op het duplicaat. Er wordt geen data gewist.
-
Non-destructieve tweewegduplicatie. We kopiëren alle bestanden die wel op A staan maar niet op B naar B. Vervolgens kopiëren we ook alle bestanden die wel op B staan maar niet op A naar A. Er wordt niets gewist.
Methode 2 leidt tot ongelijke systemen. Systeem B bevat na een tijd namelijk allerlei oude data, die gewist werd op systeem A. Eigenlijk is dat een back-up en geen synchronisatie.
Kleine updates
Benjamin C. Pierce is een professor aan de afdeling computer- en informatiewetenschappen van de Amerikaanse universiteit van Pennsylvania. Hij interesseert zich in bestands- en datasynchronisatie. Uit die interesse vloeiden twee projecten voort, allebei open source: Unison en Harmony.
Unison is software voor bestandssynchronisatie. 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 tweede project, Harmony, dat XML-data synchroniseert.
Ook al is Unison officieel stopgezet, we willen het je toch even voorstellen. De noodzaak tot het synchroniseren of gelijkmaken van twee bestandenstructuren is iets wat al jaren lang 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.
Unison kun je als broncode downloaden, of als uitvoerbaar bestand (executable). De uitvoerbare versie is beschikbaar voor allerlei platformen, waaronder ook Linux en Windows. Naar keuze krijg je voor die twee besturingssystemen een variant voor de opdrachtregel (command line) of een met een gui (grafische gebruikersinterface).
Werking
De installatie van de Windows-uitvoering van Unison vereist voor de gui-variant wel installatie van de GTK-bibliotheken. Dat zijn ondersteunende bestanden voor grafische interfaces. Door de Unison-gui te baseren op GTK, krijg je precies dezelfde interface op Windows als op 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 met de verschillen. Je kunt dan kiezen of er van links naar rechts of van rechts naar links gekopieerd moet worden. Dus 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. Je kunt per directory andere opties kiezen als je dat wenst. Er zijn heel wat opties om conflicten op te lossen of om wijzigingen te verplichten. Paden kunnen genegeerd worden en bestanden in directories zijn te sorteren.
Snelle werking
We konden zo gauw niets vinden waarop Unison tekort schiet. De aangenaamste verrassing was de snelle werking. Unison gaat met een enorme vaart door directorybomen heen. Het synchronisatieproces daarna gaat ook al razendsnel. Voor een volgende keer kun je simpelweg kiezen voor de optie ‘detecteer updates en ga verder zonder wachten'. Dat herhaalt dan de vorige synchronisatie.
Uiteraard kun je dit ook allemaal automatiseren zodat het zonder enige menselijke tussenkomst valt uit te voeren. Je kunt een synchronisatieconfiguratie als een Unison-profiel bewaren en dan bij een volgende uitvoering kiezen welk profiel je wilt hanteren. Met de opdrachtregelvariant kun je synchronisaties vanuit scripts uitvoeren.
Conclusie
Unison werkt erg eenvoudig, snel en is gewoon steengoed. De broncode is beschikbaar en kan dus ook nog worden verbeterd of aangepast waar nodig.
Productinfo
Product: Unison 2.27 (stable) / 2.28 (unstable)
Product website: http://www.cis.upenn.edu/~bcpierce/unison/
Producent: Prof. Benjamin C. Pierce, http://www.cis.upenn.edu/~bcpierce
Adviesprijs (excl. BTW): gratis
Systeemvereisten: Windows, Linux, *BSD, OS X: open source
De kern
- Synchronisatie en replicatie zijn niet hetzelfde.
- Unison is intelligente, snelle en goedwerkende opensourcesynchronisatiesoftware.