63 lines
3.0 KiB
Markdown
63 lines
3.0 KiB
Markdown
---
|
|
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`)
|