Synchronisation de fichiers en temps réel


22

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 rsynccommande ne me convient pas à ce sujet, car si je configure rsyncen cron, le temps minimum que je peux définir est de 1 minute, mais j'en ai besoin en temps réel.


2
Avez-vous besoin d'une synchronisation entre un serveur en lecture-écriture et un ou plusieurs serveurs en lecture seule, ou avez-vous besoin d'une synchronisation bidirectionnelle (avec propagation dans les deux sens) ou n-way? Si vous voulez bidirectionnel, comment résolvez-vous les conflits?
Gilles 'SO- arrête d'être méchant'

Réponses:


18

Je ne l'ai pas utilisé moi-même mais je l'ai lu récemment. Il y a un démon appelé lsyncdqui, je suppose, fait exactement ce dont vous avez besoin.

En savoir plus ICI


2
À mon humble avis, cela devrait être la réponse acceptée. lsyncdutilise inotify& devrait être le plus rapide au niveau fs. Plus sur github.com/axkibe/lsyncd . Depuis cette page: Lsyncd surveille une interface de surveillance d'événements d'arborescence de répertoires locaux (inotify ou fsevents). Il agrège et combine les événements pendant quelques secondes, puis génère un (ou plusieurs) processus pour synchroniser les modifications. Par défaut, c'est rsync. Lsyncd est donc une solution légère de miroir en direct qui est relativement facile à installer, ne nécessitant pas de nouveaux systèmes de fichiers ou blocs de périphériques et n'entrave pas les performances du système de fichiers local.
SACHIN GARG

5

Inotify-tools

Fournir 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 des 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.


4

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

Il existe un bon outil appelé lsyncdpour 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 dans les deux serveurs et l'ajouter au authorized_keysfichier. [ajouter la clé publique de server1 au serveur2 authorized_keyset la clé publique de server2 au authorized_keysfichier de server1 ]

Configuration de Server1

Ouvrez /etc/lsyncd.confet 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 en targetparamètre.

Vous pouvez changer le delayparamètre selon votre condition. Ici, il est réglé sur 1 seconde.

Créez maintenant le répertoire des journaux.

# mkdir -p /var/log/lsyncd

Activez le lsyncdservice 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 changez l' targetIP.

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.


Le paramètre de retard sous la fonction de réglages n'est pas valide. Utilisez plutôt la variable maxDelays . J'ai implémenté cet outil. C'est vraiment puissant.
Hasanuzzaman Sattar

3

La synchronisation peut ê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.


2

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.


En fait, ces serveurs sont chez AWS. Nous ne pouvons donc pas obtenir un environnement de cluster! N'y a-t-il pas d'autre moyen?
Sourav

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.