Existe-t-il un outil disponible pour synchroniser les fichiers entre deux serveurs Linux ou plus immédiatement après avoir écrit le fichier sur le disque? La commande rsync
ne me convient pas sur ce point, car si je mets rsync
en cron, le temps minimum que je peux définir est de 1 minute, mais j'en ai besoin en temps réel.
Je ne l'ai pas utilisé moi-même mais je l'ai lu récemment. Il existe un démon appelé lsyncd
, qui, je présume, fait exactement ce dont vous avez besoin.
En savoir plus ICI
Il existe un bon outil appelé lsyncd
pour synchroniser les fichiers entre plusieurs serveurs en temps réel. Ici, j'ai essayé avec deux serveurs.
Hôtes: Server1 et Server2
Système d'exploitation utilisé: CentOS 7
Installez les packages ci-dessous sur les deux serveurs.
# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd
générer la clé ssh sur les deux serveurs et l'ajouter au fichier authorized_keys
. [ajouter la clé publique de server1 au authorized_keys
de server2 et la clé publique de server2 au fichier authorized_keys
de server1)
Ouvrez /etc/lsyncd.conf
Et commentez la configuration par défaut en utilisant --
Au début de la ligne et ajoutez la configuration ci-dessous au fichier.
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
delay = 1
}
sync {
default.rsync,
source="/home/test/public_html/",
target="server2:/home/test/public_html/",
rsync = {
compress = true,
acls = true,
verbose = true,
owner = true,
group = true,
perms = true,
rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
}
}
Modifiez l'IP cible dans le paramètre target
.
Vous pouvez modifier le paramètre delay
selon vos besoins. Ici, il est réglé sur 1 seconde.
Créez maintenant le répertoire des journaux.
# mkdir -p /var/log/lsyncd
Activez le service lsyncd
pour démarrer automatiquement.
# systemctl enable lsyncd.service
Démarrez le service.
# systemctl start lsyncd.service
Suivez la même configuration que Server1 et modifiez l'IP target
.
Maintenant, la synchronisation est définie.
Vous pouvez vérifier l'activité à partir de tailf /var/log/lsyncd/lsyncd.log
Merci à MelBurslan pour sa suggestion.
Fournissez une interface à inotify
, composée de:
inotifywait
Cette commande bloque simplement les événements inotify, ce qui la rend appropriée pour une utilisation dans les scripts Shell. Il peut regarder n'importe quel ensemble de fichiers et de répertoires et peut récursivement regarder des arborescences de répertoires entières.
inotifywatch
Cette commande collecte les statistiques d'utilisation du système de fichiers et génère le nombre de chaque événement inotify.
Syncthing pourrait être une option. C'est extrêmement rapide, le transfert est crypté et il existe des clients pour plusieurs plates-formes. Il utilise "inotify" pour synchroniser instantanément les fichiers modifiés.
Vous auriez besoin d'aborder cela avec une solution de type système de fichiers en cluster - une simple synchronisation entre les deux machines ne vous donnera pas de réponse en temps réel.
"SIOS Protection Suite pour Linux" peut offrir cela, sur AWS.