![]()
![]()
Onder Microsoft Windows heb je een feature dat je bestanden offline kan bewerken via een werkmap en deze daarna weer kan synchroniseren met je oorspronkelijk bestanden. Dit kan ook onder Ubuntu met behulp van Unison.
Unison is een tweeweg bestandssynchronisatietool voor Unix, Linux en MS Windows.
| Dit tool is niet te verwarren met het commerciële Unison product wat via de website van Unison te koop wordt aangeboden. In de toekomst wordt dit commercieel product ook aangeboden in de Canonical Store. |
In dit artikel behandel ik alleen de Linux variant. Unison kan twee replica’s van bestanden en/of folders synchroniseren. Deze replica’s kunnen zich op dezelfde hardeschijf of op verschillende hardeschijven op hetzelfde besturingssysteem of op verschillende besturingssysteem bevinden.
Een voorbeeld configuratie
Een optimale configuratie is Unison in combinatie met Secure Shell (SSH). Als je Unison wilt gebruiken voor het synchroniseren tussen twee of meer computers (en dat zal meestal het geval zijn), dan is het aan te raden dit veilig te doen, zodat niemand deze bestanden kan onderscheppen. Zeker als je dit via internet doet. Het is dan ook aan te bevelen het synchroniseren over een beveiligde verbinding te doen. Dat kan via Secure Shell (SSH).
Even een voorbeeld van een configuratie. Stel je voor dat je een laptop hebt en twee desktops. Op de desktops staan bestanden die je van tijd tot tijd wilt meenemen op je laptop. Het synchroniseren doe je alleen via de laptop. Wat moet je dan allemaal op deze machines hebben geïnstalleerd? Hieronder vind je een opsomming:
- op de laptop: unison, unison-gtk en openssh-client. De laatste zal bij Ubuntu standaard geïnstalleerd zijn.
- op de twee desktops: unison en openssh-server.
Het is aan te bevelen altijd via één computer te synchroniseren. Dit om conflicten zoveel mogelijk te vermijden. In mijn voorbeeld is dat de laptop.
Unison installeren
Als je Unison gebruikt om te synchroniseren tussen meerdere computers, dan moet op elke computer dezelfde versie van Unison zijn geïnstalleerd. Unison maakt namelijk gebruik van het client server principe. Op de computer waar je synchroniseert (de client) kan je het beste de grafische interface (unison-gtk) installeren. Hoeft niet, omdat je Unison ook via de commando regel kan bedienen. Het is wel handig.
Installeren:
- Ga naar Systeem –> Beheer –> ‘Synaptic pakketbeheer’
- In het ‘Synaptic Pakketbeheer’ venster klik op Zoeken in de werkbalk.
- In het Zoeken venster vul bij ‘Zoeken:’ unison in en klik op de Zoeken button.
- In het ‘Synaptic Pakketbeheer’ venster selecteer unison met de rechter muisknop en kies ‘Markeren voor installatie’. Accepteer eventueel te installeren afhankelijkheden.
- Optioneel: Selecteer vervolgens ook unison-gtk met de rechter muisknop en kies weer ‘Markeren voor installatie’. Unison-gtk is de grafische interface bovenop Unison.
- Klik op Toepassen in de werkbalk.
- Klik in het Samenvatting venster op de Toepassen button.
- Klik in het ‘veranderingen doorgevoerd’ venster op de Sluiten button.
- Sluit het ‘Synaptic pakketbeheer’ venster.
Unison en SSH
Voor Secure Shell moeten we SSH gaan installeren. Ook bij SSH hebben we een client server configuratie. In principe kan elke computer een client en een server zijn voor Unison. Het is immers een tweeweg synchronisatietool. De computer waarop je Unison start is de client en de andere computer is de server.
Server configuratie
Voor een veilige verbinding moeten we op de server de OpenSSH server installeren. We doen dit als volgt:
- Ga naar Systeem –> Beheer –> ‘Synaptic pakketbeheer’.
- In het ‘Synaptic pakketbeheer’ venster klik op Zoeken in de werkbalk.
- In het Zoeken venster vul openssh in bij ‘Zoeken:’ en klik op de Zoeken button.
- Terug in het ‘Synaptic pakketbeheer’ venster klik met de rechter muisknop op openssh-server en kies ‘Markeren voor installatie’.
- Accepteer eventuele afhankelijkheden die ook geïnstalleerd moeten worden.
- Klik op Toepassen in de werkbalk.
Op de firewall moet poort 22 opengezet worden, zodat binnenkomende verzoeken de server kunnen bereiken.
Client configuratie
Controleer of de openssh-client is geïnstalleerd:
- Ga naar Systeem –> Beheer –> ‘Synaptic pakketbeheer’.
- In het ‘Synaptic pakketbeheer’ venster klik op Zoeken in de werkbalk.
- In het Zoeken venster vul openssh in bij ‘Zoeken:’ en klik op de Zoeken button.
- Terug in het ‘Synaptic pakketbeheer’ venster controleer of het vakje voor openssh-client groen is. Zo ja dan is openssh-client geïnstalleerd. Zo niet:
- klik dan met de rechter muisknop op openssh-client en kies ‘Markeren voor installatie’.
- Accepteer eventuele afhankelijkheden die ook geïnstalleerd moeten worden.
- Klik op Toepassen in de werkbalk.
Als je bovenstaande op een Local Area Network (LAN; thuisnetwerk) gebruikt, dan hoef je verder niets te doen. Als je een SSH verbinding wilt opzetten via het Wide Area Network (WAN; internet) en je hebt meerdere computers op je LAN, dan zul je port-forwarding moeten aanzetten in je modem/router . Dit hangt echter van je modem/router af hoe dit te doen. Ee goed website hiervoor is: PortForward.
Unison gebruiken
Unison gebruik de volgende begrippen:
- replica: een folder.
- root: de root van een replica geeft aan waar de te synchroniseren bestanden zich bevinden. Unison maakt onderscheid in absolute en relatieve roots. Een absolute root is een compleet pad startende met een slash (/). Een relatieve root is een pad ten opzichte van de home folder. Bijvoorbeeld Documenten is een relatieve root voor /home/John/Documenten (/home/John is de home folder).
- pad: een bestand binnen een replica met een relatieve root. Als in Documenten het bestand ToDo staat, dan is het pad van het bestand ToDo een relatieve root voor /home/John/Documenten/ToDo.
Ga naar Toepassingen –> Hulpmiddelen –> Unison om Unison te starten.
Profiel aanmaken
Als voorbeeld ga ik synchroniseren tussen twee replica’s: AutoCitroen (lokaal) en Afbeeldingen (lokaal of remote).
- De eerste keer dat je Unison gebruikt krijg je een default profiel, wat je nog wel moet voorzien van twee replica’s die je wilt synchroniseren. Je krijgt dan ook het volgende venster:

De volgende keren dat je Unison start krijg je het Profile venster. Een nieuw profiel creëren doe je door op de ‘Create new profile’ button te klikken.

- In het ‘Root selection’ venster klik op de Browse button om een replica (een folder) die je wilt synchroniseren te selecteren. Zorg dat je ook op die folder dubbel geklikt hebt!
Klik op de OK button. - In het 2de ‘Root selection’ venster klik weer op de Browse button om de andere replica (ook een folder; het is immers een tweeweg synchronisatietool), waarmee gesynchroniseerd wordt, te selecteren.
Je ziet 4 opties:- Local: Gebruik deze optie als je Unison alleen lokaal (dus op een computer) wilt gebruiken.
- SSH: Gebruik deze optie als je Unison op meerdere computers gebruikt en dit veilig wilt doen via het Secure Shell (SSH) protocol (zie hoofdstuk Unsion en SSH hierboven).
Als je deze optie hebt gekozen kan je bij “Directory:” de te synchroniseren replica specificeren. Doe dit relatief ten opzichte van de home directory van de computer waarmee je wilt synchroniseren. Dus als het pad op de computer waarmee je wilt synchronisren is /home/John/Documenten/werkmap dan specificeer je bij “Directory:” ‘Documenten/werkmap’ (zonder quotes).
Kies SSH en vul bij “Host:” het IP-adres of de hostnaam in. Bij ‘(Optional) User’ vul je een gebruikersnaam in die op de remote computer toegang heeft. Voor deze gebruiker heb je een paswoord nodig!

- RSH: We kiezen deze optie nooit omdat RSH ouder is dan SSH en omdat SSH veiliger is dan RSH.
- Socket: We kiezen deze optie nooit omdat deze niet veilig genoeg is. De TCP-poort staat dan nl. open en iedereen kan toegang krijgen tot je computer.
- Je krijgt nu een melding dat er geen archiefbestanden gevonden zijn. Dit komt omdat je nu net je profiel gemaakt hebt. Klik op de OK button.

- Nu opent zich het Unison scherm om de bestanden in de folders te gaan synchroniseren. Je ziet de volgende kolommen:
- De replica met relatieve root (kolom 1)
- Action: deze geeft de synchronisatie richting aan voor het te synchroniseren bestand.
- De andere replica met relatieve root (kolom 3)
- Status: hierin komt de status van de synchronisatie te staan.
- Path: een bestand in de repilica met relative root. Elk bestand heeft zijn ‘eigen’ pad.
Synchroniseren
Ga naar Toepassingen –> Hulpmiddelen –> Unison om Unison te starten en kies een profiel.
Tijdens het synchroniseren kan je te maken krijgen met conflicten in paden (nogmaals elk bestand heeft zijn eigen pad).
Conflicten ontstaan als in beide replica’s:
- een pad is gewijzigd in de ene replica, en
- een ander pad is gewijzigd in de andere replica, en
- de inhoud van de replica’s is niet hetzelfde.
Als er conflicten zijn zal Unison daar een melding van maken en je krijgt de mogelijkheid om de actie te wijzigen. Er zal dan een vraagteken in de kolom Action staan en onderin het scherm zie je wat de status van het bestand is.

Je kan dan een beslissing nemen om een bepaalde actie uit te voeren. Die actie kan een van de acties in het menu Actions of Ignore zijn.
Als alle acties correct zijn, klik dan op Go in de werkbalk.
LET OP MET HET WEGGOOIEN VAN EEN BESTAND OF FOLDER IN EEN VAN DE REPLICA’S! Ook dit wordt gesynchroniseerd. Unison meldt het wel, maar als je niet oplet dan ben je je bestand kwijt. Je kunt dit voorkomen door een correcte synchronisatie actie te kiezen onder het menu Actions.
![]()
Hetzelfde geldt voor het hernoemen van een folder. Unison ziet dit als een verwijdering en zal de folder in de andere replica weggooien en de hernoemde folder creëren. Dit is op zich geen probleem zolang je de bestanden maar niet op ignore hebt gezet. De originele bestanden uit de hernoemde folder zullen dan niet gekopieerd worden.
Het verwijderen van een profiel
In de grafische interface van Unison zit geen optie om een profiel te verwijderen. Dit kan je wel handmatig doen. De profielen zijn te vinden in je HOME folder in de .unison (let op de punt) folder. Kies in Bestandsbladeraar in het menu Beeld de optie ‘Verborgen bestanden weergeven’ om deze folder te kunnen zien. Het profiel word bewaard in een bestand met de profielnaam en .prf aan het eind. Deze kan je verwijderen als je het profiel niet meer nodig hebt.
Unison automatisch starten na het booten
Als je bijvoorbeeld op een laptop herinnert wilt worden dat je moet synchroniseren, dan kan je Unison automatisch starten door Unison op te nemen in de sessie. Dit doe je als volgt:
- Ga naar Systeem –> Voorkeuren –> Sessies.
- In het Sessiesvoorkeuren venster klik op de Toevoegen button.
- In het ‘Te starten programma toevoegen’ venster vul bij ‘Naam:’ Unison in, vul bij ‘Opdracht:’ unison-gtk in en vul bij ‘Commentaar:’ ‘Automatisch synchroniseren’ in. Klik op de OK button.
- Klik op de Sluiten button om het Sessievoorkeuren venster te sluiten.




Beste Leo,
Bedankt voor dit artikel. Dit is precies wat ik bedoelde bij het stellen van mijn vraag op je weblog. Heldere uitleg en het werkt! Nogmaals bedankt.
Remco
Comment door Remco — september 26, 2008 @ 8:26 pm |
Dag Leo,
Ik heb Unison vergeleken met FullSync, en moet toegeven in eerste instantie mijn gading meer te vinden in FullSync. Het lijkt me net iets vlotter te configureren.
Alleen is er 1 iets vervelend met FullSync, allicht omdat het niet standaard bij de ubuntu-software hoort en ik het dus zelf manueel heb moeten installeren. Ik dien dit programma op te starten via het terminalvenster, waar ik volgende commando moet ingeven: sh /home/roeland/FullSync/bin/fullsync.sh Bestaat de mogelijkheid niet om dit programma ook toe te voegen aan de menubalk (toepassingen, hulpmiddelen)?
Comment door Roeland — november 11, 2008 @ 10:13 pm |
@Roeland, dat zou kunnen. Ik ken FullSync niet. FullSync als menu-item toevoegen: ga naar Systeem –> Voorkeuren –> Hoofdmenu. Klik op hulpmiddelen. Klik op nieuw item. Vul gegevens in. Voor een ander icoon kan je op het icoon links klikken.
Comment door Leo — november 11, 2008 @ 11:17 pm |
OK, Leo, werkt perfect!
Het zijn die handige tips die uw blog zo waardevol maken.
Comment door Roeland — november 12, 2008 @ 9:23 pm |
@Roeland, Dank je. In de commentaren staan inderdaad enige handige tips. Misschien moet ik de meest waardevolle er uitlichten en kleine artikeltjes met thumbnails van maken. Dan zijn ze voor anderen ook makkelijk te vinden.
Comment door Leo — november 12, 2008 @ 9:47 pm |
Dag Leo,
ik gebruik Unison al meer dan twee jaar om lokaal te synchroniseren met een externe USB schijf. Nu heb ik ook een schijf aan de router hangen die benaderd wordt met samba. Hoe kan ik unison gebruiken om hiernaar te schrijven? SSH RSH of socket schijnen allemaal niet te werken. Moet ik de SMB schijf soms lokaal mounten in FSTAB en dan unison daarnaar laten schrijven?
groet
Jeroen
Comment door Jeroen — december 21, 2008 @ 3:35 pm |
@Jeroen, ik ga er van uit dat aan je router een (USB-)schijf hangt en geen computer. Als dat zo is ben ik bang dat je niet kunt synchroniseren met Unison of je moet een mogelijkheid hebben om Unison op de router te installeren. Zowel de zendende als de ontvangende kant heeft namelijk Unison nodig.
Als de router een SSH server heeft, kan je er met SSH naar toe. De beste optie is inderdaad mounten. Probeer Locaties –> ‘Verbinden met server…’. Gebruik het ip-adres van de router als server-naam/ip.
Comment door Leo — december 21, 2008 @ 9:31 pm |
Dag Leo,
ik heb een Netwerkschijf aan de router gehangen en in fstab de volgende lijn toegevoegd:
//192.168.2.11/public /media/netwerkdrive cifs guest,nounix,uid=1000,iocharset=utf8,codepage=unicode,unicode 0 0
daarmee is de netwerkschijf standaard gemount geworden en toegankelijk via een normaal zoekpad in /media/netwerkdrive Unison kan hier mee overweg blijkt.
groet
jeroen
Comment door Jeroen — januari 3, 2009 @ 10:40 pm |
@Jeroen, goed dat je dit geprobeerd hebt en dat dit werkt. Eigenlijk logisch als deze netwerkschijf een eigen IP-adres heeft. Geweldig! Ook ik heb iets geleerd. Dank voor de terugkoppeling.
Comment door Leo — januari 3, 2009 @ 11:00 pm |