blog_hero_Syschroniseer mappen met lsync

Syschroniseer mappen met lsync

Jan 27 2025

Synchroniseer mappen met lsync

Het is handig dat we op vershillende manieren bestanden kunnen overzetten naar andere servers. Er werd al heel hard gebruik gemaakt van SCP. Tegenwoordig is dat niet meer veilig en gebruik je best rsync. Een heel handig programma'tje. Deze kan je nu ook gebruiken in combinatie met andere software zoals lsync (L, niet I) om mappen gesynchroniseerd te houden. Deze tool werkt namelijk als een service.

Installatie

Zoals je kan verwachten kan je je packagemanager gebruiken om de tool terug te vinden en te installeren. Deze zou in de standaard repos moeten zitten.

sudo dnf install lsyncd
sudo apt install lsyncd

Configuratie

lsync werkt met lua als configuratie taal. Daarnaast wordt je verwacht om zelf heel wat zaken klaar te zetten of in te stellen. Dat begint met het aanmaken van de nodige mappen en aanmaken van de vereiste bestanden die je gaat gebruiken.

sudo mkdir -p /data/{bron,bestemming}
sudo mkdir /var/log/lsyncd
sudo mkdir /etc/lsyncd

sudo touch /var/log/lsyncd/lsyncd.{log,status}

Nu kunnen we de algemene configuratie aanmaken in /etc/lsyncd/lsyncd.conf.lua.

settings {
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status"
}

Hierop aanvullend gaan we ook de synchronisatie instellen in datzelfde bestand. Van zo sync blokken kunenn er meerdere bestaan. Elke blok gaat dan een unieke synchronisatie vertegenwoordigen.

sync {
        default.rsync,
        source = "/data/source",
        target = "/data/dest"
}

Zoals je je kan inbeelden is dit niet geheel relevant. Dit synchroniseert twee mappen op dezelfde server. We kunnen dit nu aan passen om de bestanden naar een andere server te verplaatsen. Een paar aandachtspunten is dat dit programma stanaard als root gebruiker wordt uitgevoerd. Zo gaan verbindingen opgestart worden. Het is dus interessant om de verbinding op voorhand al eens te testen met de root gebruiker. Best practices zijn dan ook om een andere externe gebruiker in te stellen zodat er niet wordt aangemeld met de root user.

sync {
        default.rsync,
        source = "/pad/naar/lokale/map",
        target = "externegebruiker@server:/pad/naar/te/delen/map",
        rsync = {
                rsh = "/usr/bin/ssh -i /pad/naar/.ssh/identityfile"
        }
}

Als dan eenmaal alles goed staat, kan je de service starten met: sudo systemctl enable --now lsync.service. Problemen met de configuratie kan je terugvinden met sudo systemctl status lsync.service. Daarnaast problemen met de verbinding zelf worden opgeslagen in het logbestand dat we in de configuratie hebben opgegeven. (/var/log/lsyncd/lsyncd.log)