---
title:  "Syschroniseer mappen met lsync"
excerpt: "Het kan handig zijn om bestanden over servers gesynchroniseerd te houden. Dat is niet moeilijk en hier zie je hoe."
date:   "2025-01-27T12:00:00.000Z"
author: Eli Winderickx
hero_image: /cover_lsyncd.png
category: synchronisatie,lsync,Linux
---
# 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.
```bash
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.

```bash
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`.

```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.

```lua
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.

```lua
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`)
