Utiliser Lsyncd pour synchroniser deux dossiers

Twitter Facebook Google Plus Linkedin email

J’ai vaguement évoqué ce petit logiciel lors de mon billet de réflexion sur le passage à plusieurs serveurs pour un hébergement de site web. Sachant que j’ai eu l’occasion de revenir dessus récemment, je me suis dit qu’il était pertinent de ne pas passer par une simple astuce diverse et donc de lui consacrer un billet dédié.

Lsyncd est un service qui tourne en arrière plan, et lance au besoin une synchronisation entre deux dossiers, qui peuvent se trouver sur la même machine ou, dans le cas qui m’intéresse le plus, deux machines différentes.

C’est une solution fréquemment proposée lorsqu’il s’agit de synchroniser deux serveurs qui hébergent un Drupal, mais la solution est valable pour pratiquement tout type d’application. En effet, si vous avez deux serveurs qui doivent délivrer le même site web, il est absolument nécessaire que leur contenu soit identique. Et ici, l’idée est de se passer de NFS pour limiter les appels lents via le réseau.

Pourquoi le préférer à une solution classique type rsync via une tâche planifiée ? Ben déjà une tâche planifiée c’est toutes les minutes, et il faut ruser pour réduire ce délai. Vous pouvez donc très souvent avoir des contenus différents entre vos machines, ce qui est dommageable (images qui ne s’affichent pas, cache d’agrégation JS/CSS différent…). Ici, lsyncd va travailler avec inotify, que j’ai déjà pu évoquer dans un lien en vrac pour le coup, qui est un mécanisme qui permet de déclencher un évènement en fonction d’une modification du système de fichier. Donc ici dès qu’on change quelque chose, il déclenche le rsync.

Si j’ai travaillé sur des ressources intégralement en anglais au boulot, j’ai découvert par la suite que certains francophones en ont parlé. Pour une utilisation basique, je vais donc éviter de faire de la redite et vous conseiller cet article qui parle de son utilisation sous Debian.

Et si on veut que les deux serveurs communiquent entre eux, il suffit de faire la même configuration en changeant la destination en fonction du serveur. Une cross-synchronisation qui marche pas mal dans mon cas, et que j’ai donc voulu réutiliser lorsqu’on a demandé à ajouter un nouveau site destiné, à terme, à remplacer l’actuel (« vieux » Drupal 7 coincé avec du PHP 5.4, pour un nouveau Drupal 8 avec PHP 7.0).

Si l’on suit la documentation, on découvre pas mal de possibilités d’options qui permettent d’adapter le fonctionnement à notre environnement. Malgré tout, dans mon cas, et ce qui me pousse à écrire aujourd’hui, elle ne donne pas toutes les clés.

Surveiller plusieurs dossiers, pas si intuitif

C’est dans une issue Github que j’ai trouvé la piste pour la solution qui me convient, ce n’est pas inscrit dans la documentation, si ça se trouve les drogués au LUA trouveront ça très logique.

Voilà le fichier que j’avais :

C’est bien, mais ça ne fonctionne que pour un seul dossier (et ses sous-dossiers évidemment), je ne vais pas trop m’étendre sur le sujet, je vous laisse chercher les options qui vous paraissent obscures. Ce qui m’intéresse surtout c’est la méthode pour passer à plusieurs dossiers, puisqu’on ne peut pas définir plusieurs sources et plusieurs destinations.

J’en suis arrivé à utiliser la configuration suivante :

Qu’est-ce qui change ? J’ai créé une liste de sources, la destination étant identique d’un point de vue de l’arborescence et il n’y a qu’un seul serveur. Et ensuite je fais une boucle sur ces sources, et j’applique la même configuration d’origine avec comme seule modification le target, qui contient une concaténation de l’IP du serveur cible et de la variable source (et la syntaxe de cette concaténation n’est pas triviale).

Quand j’ai dit que c’était pas intuitif, c’est que je me suis planté sur la création de la liste, et quand on lit la définition de la boucle for, pour moi « _, source » n’est pas quelque chose d’évident.

Enfin bref, ça fonctionne, j’ai pu réappliquer sur mes deux fronts pour que ça soit identique, ça l’est, c’est cool 🙂

 

7
Poster un Commentaire

avatar
2 Fils de commentaires
5 Réponses de fil
3 Abonnés
 
Commentaire avec le plus de réactions
Le plus populaire des commentaires
4 Auteurs du commentaire
dcardonSeboss666Denis Cardonxharkgarfi Auteurs de commentaires récents
  S’abonner  
plus récent plus ancien
Notifier de
garfi
Invité
garfi

Connait tu Syncthing https://syncthing.net/ ?

Je met en place des solutions de backup personnel en deux coup de cuillerée avec ça 🙂
qrcode, tls, interface gtk ou web

xhark
Invité

Sinon y’a Nextcloud ? 🙂