Für Backupgeschichten ist unison bekannterweise ein äußerst nützliches Tool. Damit man es auch auf einem QNAP NAS nutzen kann musss man jedoch selbst Hand anlegen und das Programm aus den Quellen kompilieren, da es weder bei den offiziellen QNAP Apps, noch bei den inoffiziellen ipkg Paketen dabei ist.

Schritt 1: ocaml kompilieren und installieren

OCaml ist eine Abhängigkeit von unison die zum Kompilieren benötigt wird. Das Tool an sich ist zwar mittels ipkg auffindbar, jedoch ist in dem fertigen Binary der von unison benötigte Befehl ocamlopt nicht enthalten. Daher muss auch dieses Programm aus den Quellcode gebaut werden.
Dazu werden die üblichen Schritte benötigt:

wget http://caml.inria.fr/pub/distrib/ocaml-4.02/ocaml-4.02.0.tar.gz
tar xzvf ocaml-4.02.0.tar.gz
cd ocaml-4.02.0
./configure -prefix /opt
make world.opt
make install

Der Vorgang dauerte auf meiner TS 212 eine ganze Weile (>30min) lief jedoch ohne Probleme durch.
Wichtige Randnotizen: für alle Kompilierprozesse auf dem NAS sollte vorher sichergestellt sein, das die Programme sed und awk aus dem ipkg-opt Repository verwendet werden. Wie das geht habe ich hier beschrieben.
Weiterhin sollte man eigene Programme stets unter /opt installieren, da der Platz unter /bin und /usr/bin äußerst knapp bemessen ist.

Schritt 2: unison kompilieren und installieren

Danach kann unison auf die gleiche Art und Weise erstellt werden:

wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.3.tar.gz
tar xzvf unison-2.48.3.tar.gz
cd unison-2.48.3
make
chmod 0755 unison
cp -Rp unison /opt/bin/

Wenn nun unison -version aufgerufen wird, sollte eine Ausgabe wie:

unison version 2.48.3

erscheinen.

Schritt 3: unison daemon erstellen

Es gibt im Netz zahlreiche Anleitungen, wie eigene Services auf dem NAS hinzugefügt werden. Ich benutze meist die einfache Variante für jeden Prozess ein init File anzulegen. Die Datei für unison sieht dabei wie folgt aus:

cat /opt/etc/init.d/S112unison 
#!/bin/sh

PATH=/sbin:/bin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin
start() {
        echo "linking .unison directory"
        /bin/ln -s /opt/.unison ~/.unison
        echo "starting unison server on port 10404"
        /opt/bin/unison -socket 10404 & 
}

stop() {
        echo "stopping unison"
        killall unison
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                sleep 1
                start
                ;;
        *)
                echo "Usage: $0 (start|stop|restart)"
                exit 1
                ;;
esac

Damit die Änderungen unter ~.unison persistent bleiben und nicht nach einem Reboot verloren gehen, wird beim Starten ein Symlink von .unison Ordner nach /opt/.unison erstellt.
Wenn der Dienst gestartet ist (via /opt/etc/init.d/S112unison start) läuft unison nun im Socket Modus. Dabei wird die Dateiübertragung nicht wie in der Standardeinstellung von unison verschlüsselt per ssh übertragen, sondern direkt und unverschlüsselt. Da ich die Backups nur im LAN durchführe stellt das für mich kein Sicherheitsrisiko dar und erspart dem eher leistungsschwachen NAS die Rechenleistung die für die Verschlüsselung notwendig ist.

Schritt 4: Backup client konfigurieren

Zum Abgleichen der Daten verwende ich den GTK-Client von unison, jedoch sollte die CLI Version mit der entsprechenden .prf Datei änhlich funktionieren.
Um unison mit dem eben auf dem NAS gestarteten Socket zu verbinden wird folgendes in den Einrichtungsdialog von Unidon ausgewählt/eingetragen:

Synchronisation kind: "Through a plain TCP connection"
Host: die IP oder der Hostname des NAS
Port: den oben eingetragenen (in meinem Beispiel: 10404)

Nach dem Beenden des Wizzards fängt unison an nach den Dateiänderungen zu suchen. Die Synchronisation kann dann wie gewohnt mit einem Klick auf "Go" gestartet werden.