# bidirektional syncen



## Ch (12. September 2010)

Hallo,

ich suche ein Programm um Samba shares von zwei Standorten bidirektional zu syncen.

Rsync scheidet da ja aus, unison soll ein Umlautproblem haben. Dann bin ich auf http://r2sync.org gestossen.

Das ganze soll dann über cron laufen, wie oder mit was würdet ihr das Problem lösen?

Danke


----------



## Ronox (14. September 2010)

Hi,

ich hatte mal Zuhause Synkron benutzt, aber das war Platformübergreifend, wer weiß vielleicht hilft dir das ja schon. Wenn nicht bastel doch ein Script welches die beiden Ordner in dein Dateisystem einhängt und diese dann vergleicht, spontan würde ich dort etwas mit ls und diff probieren und den rest dann noch per Schleife kopieren lassen.

MFG Ronox


----------



## Ch (14. September 2010)

Hallo,
habe mich jetzt doch für Unison im Batchmode entschieden. Eine NFS Freigabe mounten war auch meine erste Idee. Da hatte ich aber bedenken wegen der Stabilität der Internetverbindung.

Ziel war es nur die Homeverzeichnisse der Mitarbeiter der Aussenstelle zu syncen. Für Leute die es interessiert, hier meine Lösung.

Vorraussetzungen: 
- VPN zwischen den beiden Netzen
- SSH ohne Passwort über Public Key
- Installation auf beiden Seiten von Unison

Jetzt habe ich für jeden Mitarbeiter eine *.prf Config Datei erstellt und unter ".unison" abgespeichert. Dort ist der Ort wo Unison nach diesen Dateien sucht.

Inhalt der *.prf Datei

```
root = /home/username # Lokaler Pfad zum Verzeichnis
root = ssh://root@192.168.0.2//home/username # entfernter Pfad zum Verzeichnis
prefer=newer
times=true
```

Jetzt habe ich noch eine kleines Shellscript geschrieben, was die Configdateien nacheinander einliest und Unison mit der entsprechenden Config aufruft. Diesen Skript wird dann per cron aufgerufen.

Inhalt isync.sh

```
#!/bin/sh
DATUM=$(date +%d.%m.%Y-%HUhr)
LISTE=`find /root/.unison/ . -iname "*.prf"`; 
REMOTEIP=192.168.0.2
ping -c 3 $REMOTEIP > /dev/null # mache 3 pings und leite die Ausgabe in /dev/null um
if [ $? -eq 0 ] # wenn ping OK dann starte unison, sonst mache nichts
then for i in $LISTE; #lese alle *.prf Dateien aus LISTE
do
#starte unison und schreibe Logfile mit Username und Zeitstempel
unison -batch -owner -silent -contactquietly -auto -log -logfile /var/log/unison/$(basename "$i" ".prf").$DATUM.log $(basename "$i" ".prf") 2>&1
done
fi
```

Bisher konnte ich keine Probleme entdecken. Vielleicht hilft es ja jemanden.


----------

