Kurztipp: syncen mit lsyncd

Lsyncd hatte ich mir schon mal vor Jahren angeschaut. Damals wurde aber ssh als Transport noch nicht unterstützt.  Nun habe ich mir das nochmal kurz (wirklich kurz) unter Debian 8 angeschaut (Version 2.1.5). Lsyncd überwacht Verzeichnisse via inotify und überträgt alle geänderten Dateien automatisch auf die angegebenen Zielhosts.  Lsyncd bietet eine große Anzahl an Optionen, daher schadet ein Blick auf die Homepage nicht. Zum schnellen testen kann man einfach folgendes ausprobieren:

apt install lsyncd

Auf der Konsole:

lsyncd -rsyncssh /home/thomas/hallo zielhost /home/thomas/test

Dabei wird der Inhalt des Ordners hallo in den Zielordner test Übertragen. Default werden Änderungen alle 15 Sekunden übertragen. Der Zielordner wird dabei automatisch angelegt.

Konfigurationsdateien lassen sich auch „problemlos“ nutzen, z.B.:

$ cat /etc/lsyncd/lsyncd.conf.lua                                                                       
settings  {
        logfile = "/var/log/lsyncd/lsyncd.log",
                statusFile = "/var/log/lsyncd/lsyncd.status"
                }

sync {
        default.rsyncssh,
        source = "/home/thomas/hallo",
        host = "thomas@zielhost",
        targetdir = "/home/thomas/test",
      }

und mit

service lsyncd start

den daemon starten. Danach eventuell noch ein

update-rc.d lsyncd defaults

für den Autostart des daemons.

Dabei muss auf dem Zielhost ssh login ohne Passwort erlaubt sein. Man kann aber auch rsyncd zur Übertragung nutzen. Zu beachten ist das lsyncd default „delete“ als Option hat. Das merkst Du daran, dass plötzlich vielleicht Dein gesamtes home directory gelöscht wurde…nicht das es mir passiert wäre. Die Syntax im Bezug auf „/“ bei Verzeichnissen ist anders als bei rsync.

Lsyncd ist eventuell  interessant wenn man einfach nur ein paar Konfigurationen, ohne Puppet & Co zu nutzen, syncen will oder  man eine überschaubare Menge an Dateien auf verschiedenen hosts verteilen will. Ab einer gewissen Anzahl von Dateien stößt man an auf diverse Probleme (inotify&co). Am besten man testet lsyncd auf Testmaschinen bevor man es produktiv einsetzt.

Kurztipp: rsync kompletten Pfad übertragen

Will man bei Rsync den kompletten Pfad einer Datei übertragen muss man die -R Option nutzen.

Ich übernehme mal das Beispiel aus der man page:

Der Befehl

rsync -av /foo/bar/baz.c remote:/tmp/

kopiert uns die Datei  baz.c direkt unter /tmp auf remote.

Der Befehl

rsync -avR /foo/bar/baz.c remote:/tmp/

kopiert uns die Datei  baz.c  unter /tmp/foo/bar/ auf remote.

-R ist also nicht in -a enthalten. Für Verzeichnisse gilt das natürlich äquivalent.

btsync…ein paar Wochen später

Nun setze ich btsync schon seit einigen Wochen ein und muss sagen, dass ich sehr zufrieden damit bin. Mit der ersten öffentlichen Version gab es immer mal wieder CRC Fehler bei den Dateien, seit der neuen Version (1.0.134) ist dies aber nicht mehr aufgetaucht. Der Raspberry Pi ist dafür eine ideale Plattform, auch wenn die Geschwindigkeit beim syncen nicht besonders hoch ist. Ich nutze als Sync Device einfach einen USB Stick, wodurch nicht ständig eine externe HD laufen muss.  Bisher eine der besten und einfachsten Lösungen um Daten automatisch zu syncen ohne auf fremdgehostete tools zurückgreifen zu müssen. Ja, rsync ist auch gut hat aber hat bei mir ein ganz anderes Einsatzszenario.

rsync backup

Alle Kinder moegen rsync. Wer es noch etwas mehr moegen will, sollte die Option -b –backup-dir= nutzen.

rsync -avh --delete --progress --stats -b --backup-dir=/wtf/is/my/backup/ quelle/ zielserver:/ziel/

Dadurch werden Daten, welche durch neue ersetzt bzw. deleted werden sollen , vorher  im backup Ordner abgelegt. Der Backup Ordner, inklusive Pfad, wird dabei automatisch angelegt, bietet also genug Spielraum fuer date&co.