web-dev-qa-db-fra.com

Synchronisation de fichiers en temps réel

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.

22
Sourav

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

20
MelBurslan

Synchronisation de fichiers en temps réel entre plusieurs serveurs en mode multi maître

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)

Configuration 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

Configuration de Server2

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.

5
Sourav

Inotify-tools

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.

5
Pro Backup

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.

3
njam

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.

2
John
1
steve