Sincronizzare cartella in locale e remoto con Lsyncd su Debian Stretch
Guida su come sincronizzare automaticamente una cartella sia in locale che in remoto utilizzando lsyncd su Debian Stretch. Questo è un metodo molto utile per sincronizzare la stessa cartella su più server contemporaneamente.
Installazione:
sudo apt install lsyncd
lysncd non crea files di configurazione, ma si trovano degli esempi in:
ls /usr/share/doc/lsyncd/examples/
output:
edmond@debianbox:~$ ls /usr/share/doc/lsyncd/examples/ lalarm.lua lecho.lua lgforce.lua lpostcmd.lua lrsyncssh.lua lbash.lua lftp.lua limagemagic.lua lrsync.lua lsayirc.lua
un esempio di file di configurazione da cui partire è quello sotto:
cat /usr/share/doc/lsyncd/examples/lrsync.lua
output:
edmond@debianbox:~$ cat /usr/share/doc/lsyncd/examples/lrsync.lua ---- -- User configuration file for lsyncd. -- -- Simple example for default rsync. -- settings = { statusFile = "/tmp/lsyncd.stat", statusInterval = 1, } sync{ default.rsync, source="src", target="trg", }
Sincronizzare cartella in locale
sudo mkdir dir_sorgente
sudo mkdir dir_destinazione
creare dei files di prova:
sudo touch dir_sorgente/file{1..10}
ls source_dir/
Creare dei files di log utili per capire cosa succede durante la sincronizzazione:
sudo mkdir /var/log/lsyncd sudo touch /var/log/lsyncd/lsyncd.{log,status}
Creazione del file di configurazione:
sudo mkdir /etc/lsyncd
sudo nano /etc/lsyncd/lsyncd.conf.lua
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status" } sync { default.rsync, source = "/home/edmond/dir_sorgente", target = "/home/edmond/dir_destinazione", }
modificare quanto sopra con il proprio user/path
Avviare lsyncd:
sudo systemctl enable lsyncd
sudo systemctl restart lsyncd
e controllare la directory di destinazione che dovrebbe essersi popolata con i files di esempio:
ls dir_destinazione/
output:
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
consultare il log e lo status:
tail -10 /var/log/lsyncd/lsyncd.log
more /var/log/lsyncd/lsyncd.status
Sincronizzare cartella in remoto
la prima cosa da fare è quella di avere un accesso ssh senza password:
sudo su
ssh-keygen -t rsa
premere sempre enter
copiare la chiave sul server remoto:
ssh-copy-id USER@192.168.10.100
a questo punto se tutto è andato bene si avrà l'accesso senza password:
ssh USER@192.168.10.100
creare una directory da sincronizzare sul server:
mkdir dir_remote
exit
a questo punto bisogna editare il file di configurazione con le nuove modifiche. Di default lsyncd si collega via ssh con la porta standard 22, ma per chi usa una porta diversa bisogna specificarlo nel file di configurazione:
sudo nano /etc/lsyncd/lsyncd.conf.lua
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd-status.log", statusInterval = 1 } sync { default.rsyncssh, source="/home/edmond/dir_sorgente", host="USER@192.168.10.100", targetdir="/path/dir_remote", delay = 1, rsync = { archive = true, compress = true, whole_file = false }, ssh = { port = 2233 } }
accedendo al server si potrà vedere se la sincronizzazione è avvenuta con successo.
sudo systemctl restart lsyncd
ssh user@192.168.10.100
ls dir_remote/
output:
server1@raspberrypi:~ $ ls dir_remote/ test_files1 test_files2 test_files4 test_files6 test_files8 test_files10 test_files3 test_files5 test_files7 test_files9
Sincronizzare cartella in locale e remoto con Lsyncd su Debian Stretch
enjoy 😉