From 7bde247875f580734cffe452db631e563f53d804 Mon Sep 17 00:00:00 2001 From: Eli Winderickx Date: Fri, 31 Jan 2025 21:32:43 +0100 Subject: [PATCH] lsyncd --- posts/25-01-31-lsync.md | 66 ++++++++++++++++++++++++++++++++++++++++ public/cover_lsyncd.png | Bin 0 -> 38137 bytes 2 files changed, 66 insertions(+) create mode 100644 posts/25-01-31-lsync.md create mode 100644 public/cover_lsyncd.png diff --git a/posts/25-01-31-lsync.md b/posts/25-01-31-lsync.md new file mode 100644 index 0000000..4af2cec --- /dev/null +++ b/posts/25-01-31-lsync.md @@ -0,0 +1,66 @@ +--- +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." +coverImage: "/cover_lsyncd.png" +date: "2025-01-27T12:00:00.000Z" +author: + name: Eli Winderickx + picture: '/assets/blog/authors/eli.jpg' +ogImage: + url: "/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`) diff --git a/public/cover_lsyncd.png b/public/cover_lsyncd.png new file mode 100644 index 0000000000000000000000000000000000000000..6a0a0e6eeacf5d1d1925de91a76a2190a3cfbf71 GIT binary patch literal 38137 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%0AXFmRI{@yc`{kKMo`T8*Vu_D)^VZvB($; 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 tuLJ!vl0wA3a|-%GoUr{@cw>hL-$<@