Whoops! Nou ja, het installeren op je Ubuntu is gelukt

Verder tips.. Ik synchroniseer tussen mijn iMac en mn Asrock ION 330, via het netwerk. Daarom synchroniseer ik via SSH, wat een aantal moeilijkheden met zich meebrengt (authentication keys aanmaken zodat unison automatisch op mn server in kan loggen enzo). Gelukkig sync jij met een harde schijf die direct aan je ION hangt, dus is het allemaal wat makkelijker
De handleiding van Unison is inderdaad érg lang. Het komt erop neer dat je het programmatje aanroept met twee 'roots', twee mappen die gesynchroniseerd moeten worden. In jou geval zal dat denk ik zijn /home/lithje en /media/HD/lithje ofzo. Je aanroep ziet er op dat moment zo uit:
code:
1
| unison /home/lithje /media/HD/lithje |
Vervolgens kun je de wereld aan commandline parameters meegeven. HeyDude gaf de -batch parameter al aan, die verschillen tussen de twee mappen automatisch doorvoert mits er geen conflicten zijn. Zelf gebruik ik ook nog de -silent switch, zodat er uberhaupt geen output komt, tenzij er fouten optreden.
Een andere mogelijkheid is een default.prf aan te maken of aan te passen. Dit bestand bevat de standaard instellingen voor een aanroep aan unison. Het bevind zich in de map .unison in je home-directory, dus /home/lithje/.unison/ . Hier mijn config file, misschien kun je dat als voorbeeld gebruiken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| # Unison preferences file
confirmbigdeletes = true
logfile = /Users/drvdijk/Library/Application Support/Unison/unison.log
contactquietly = true
# roots
root = /Users/drvdijk
root = ssh://rock//home/drvdijk
ignore = Name .DS_Store
ignore = Name .localized
ignore = Name */nosync/*
# Paths to synchronize
path = Pictures
ignore = Path Pictures/iPod\ Photo\ Cache
ignore = Path Pictures/Lightroom
path = Music
ignore = Path Music/iTunes
path = Movies
path = Downloads |
In die default.pft kun je ook opgeven wat je paths zijn. In mijn geval is de eerste path dus /Users/drvdijk (dit is de standaard homedir van de gebruiker drvdijk op een iMac), en het tweede pad de ssh-drive op mn ION. Verder heeft de Mac de irritante gewoonte overal .DS_Store en .localized bestanden aan te maken die ik niet op mn ION hoef te hebben, dus die ignore ik. Ook staat daar dat */nosync/* geignored kan worden, dus alles wat in een mapje nosync zit, wordt niet meegestuurd, zowel niet van Mac naar ION, als andersom.
Dan heb ik opgegeven welke Paths gesynchroniseerd moeten worden. Ik ga echt niet mijn héle home-dir synchroniseren (Documents, Library, etc van de Mac hoeven écht niet op de ION), dus geef ik specifiek aan welke path's wél over moeten. In mijn geval dus Pictures, Music, Movies, en Downloads. In de Pictures map wil ik niet de mappen 'iPod Photo Cache' en 'Lightroom' over hebben, en in de Music map niet de 'iTunes' map.
Ik kan dus nu een volgende aanroep doen:
Nou is er op *nix systemen een mogelijkheid commando's op bepaalde intervallen uit te voeren, met de zogenaamde crontab. Hiermee voer ik elk uur de synchronisatie automatisch uit. In mijn crontab staat het volgende:
code:
1
| 5 * * * * /usr/local/bin/unison_singleton |
Elke 5 minuten over het hele uur het bestand unison_singleton uitvoeren. Ik roep expres niet automatisch unison -batch -silent aan, omdat ik wil weten wat er fout gaat als er iets fout gaat. Daarnaast wil ik dat unison op de achtergrond draait, en niet direct alle processorkracht opslurpt. Dit alles heb ik voor mezelf in het volgende script verwerkt, opgeslagen onder /usr/local/bin/unison_singleton:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #!/bin/bash
ACTIVE=$(ps aux | grep -v grep | grep -v unison_singleton | grep unison)
TMPNAME=`mktemp ~/unison.XXXX`
if [ "$ACTIVE" == "" ]; then
nice unison -batch -silent 1>$TMPNAME
if [ -s $TMPNAME ]; then
mv $TMPNAME ~/Downloads/_unison_errors.txt
else
rm -f ~/Downloads/_unison_errors.txt
fi
fi
rm -f $TMPNAME |
Het script checkt of er niet al een unison instantie bezig is. Zo niet ("$ACTIVE" == ""), dan roept hij unison aan met de parameters, vooraf gegaan door 'nice'. Dat is een commando wat unison met een lagere prioriteit opstart dan normaal. De output lus ik door naar een tijdelijk bestand ($TMPNAME, geinitialiseerd 3 regels erboven). Als er output is (-s $TMPNAME, bestand bestaat en is groter dan 0), dan verplaats ik dat bestand naar de downloads map. Zo zie ik of er iets fout gegaan is. Als er bij een volgende sync niks foutgaat, wordt de mogelijk bestaande _unison_errors.txt verwijderd uit de Downloads map.
Ik hoop dat dit wat tips zijn waar je wat aan hebt!