[Live SYNCing Daemon]. Daemon que se utiliza con rsync para sincronizar directorios locales con una máquina remota. Observa los cambios en los directorios locales y luego lanza procesos de rsync para sincronizar esos cambios con un destino remoto o local en lugar de realizar escaneos programados.
$ rsync -avz --delete /var/www/html/ usuario@servidor-remoto.com:/var/www/html/
Nota.- Antes de iniciar lsyncd, a menudo es una buena idea realizar un rsync inicial completo manualmente del origen al destino. Esto asegura que el destino ya esté sincronizado, y lsyncd solo necesite manejar los cambios posteriores.
Archivo de Configuración de Ejemplo
# nano /etc/lsyncd/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
maxProcesses = 2,
delay = 1,
}
sync {
default.rsync,
source = "/var/www/html",
target = "usuario@servidor-remoto.com:/var/www/html",
rsync = {
archive = true,
compress = true,
perms = true,
owner = true,
group = true,
exclude = {
".git/",
"cache/",
"tmp/*",
},
_extra = {"--delete"},
},
}
Explicación de la Configuración:
Bloque settings {}:
logfile: Ruta al archivo de registro de lsyncd. Esencial para la depuración.
statusFile: Ruta a un archivo donde lsyncd escribe su estado (por ejemplo, número de procesos rsync activos).
maxProcesses: Limita el número de procesos rsync que pueden ejecutarse simultáneamente. Útil para evitar sobrecargas.
delay: El tiempo que lsyncd espera después de un evento antes de iniciar un rsync. Esto ayuda a agrupar múltiples cambios rápidos en una sola transferencia.
Bloque sync {}:
default.rsync: Especifica que esta sincronización utiliza el comportamiento predeterminado de rsync. lsyncd también soporta default.direct para copias de local a local sin rsync.
source: El directorio local a monitorear.
target: El destino remoto en formato usuario@host:ruta.
rsync = {}: Esta tabla anidada te permite pasar opciones de rsync directamente.
archive = true: Esto es una abreviatura de -a, que incluye -rlptgoD [recursivo, enlaces, permisos, tiempos, grupo, propietario, dispositivos].
compress = true: Usa -z para compresión durante la transferencia.
perms, owner, group: Banderas específicas de rsync para preservar los atributos de los archivos.
exclude: Una tabla de patrones a excluir de la sincronización. Similar a rsync --exclude.
_extra = {"--delete"}: Indica a rsync que elimine los archivos en el destino que ya no existen en el origen.
Después de crear o modificar el archivo de servicio para ssystemd:
# nano /etc/systemd/system/lsyncd.service
[Unit]
Description=Servicio de sincronización Lsyncd
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/lsyncd /etc/lsyncd/lsyncd.conf
ExecReload=/bin/kill -HUP $MAINPID
PIDFile=/var/run/lsyncd.pid
Restart=on-failure
[Install]
WantedBy=multi-user.target
Se podrán usar las clásicas opciones de systemctl
# systemctl daemon-reload
# systemctl enable lsyncd.service
# systemctl status lsyncd.service