Vendredi 23 novembre 2018

lsyncd

sync {
    default.rsync,
    source="/media/yanplus/devel/ouestline/osm-new",
    target="backupuser@193.70.43.101:/srv/map",
    rsync = {
        archive = false,
        acls = false,
        compress = true,
        links = false,
        owner = false,
        perms = false,
        verbose = true,
        rsh = "/usr/bin/ssh -p 55027 -i /home/backupuser/.ssh/id_rsa -o StrictHostKeyChecking=no"
    }

inotify

Installation

sudo apt update && sudo apt upgrade
sudo apt install inotify-tools

Batch pour boucle sur le dossier à synchroniser

/srv/file-sync.sh
#!/bin/bash

while true; do
  inotifywait -r -e modify,attrib,close_write,move,create,delete /media/yanplus/devel/ouestline/osm-new
  rsync -avz -e "/usr/bin/ssh -p 55027 -i /home/backupuser/.ssh/id_rsa -o StrictHostKeyChecking=no"  /media/yanplus/devel/ouestline/osm-new/* backupuser@193.70.43.101:/srv/map
done

Service systemd sync.service

Créer un fichier appelé sync.service qui peut s’arrêter, démarrer et réinitialiser le script à la demande ou sur des événements spécifiques comme un démarrage du système dans le répertoire /etc/systemd/systemd/system/system/ avec le contenu suivant

/etc/systemd/system/sync.service
[Unit]
Description = SyncService
After = network.target

[Service]
PIDFile = /run/syncservice/syncservice.pid
User = root
Group = root
WorkingDirectory = /srv
ExecStartPre = /bin/mkdir /run/syncservice
ExecStartPre = /bin/chown -R root:root /run/syncservice
ExecStart = /bin/bash /srv/file-sync.sh
ExecReload = /bin/kill -s HUP $MAINPID
ExecStop = /bin/kill -s TERM $MAINPID
ExecStopPost = /bin/rm -rf /run/syncservice
PrivateTmp = true

[Install]
WantedBy = multi-user.target

Droits du fichier de service et recharger le démon systemd

chmod 755 /etc/systemd/system/sync.service  
systemctl daemon-reload

Activer le service

systemctl enable sync.service

Démarrer le service

systemctl start sync.service