Maison  >  Article  >  Opération et maintenance  >  Comment implémenter la synchronisation de fichiers en temps réel entre deux serveurs sous Linux

Comment implémenter la synchronisation de fichiers en temps réel entre deux serveurs sous Linux

黄舟
黄舟original
2017-06-07 10:31:002474parcourir

Supposez les exigences suivantes :

Supposez deux serveurs :

192.168.0.1 Le serveur source a le répertoire /opt/test/

192.168.0.2 Le serveur cible a le répertoire Le but de /opt/bak/test/

est de garder un certain répertoire de fichiers des deux serveurs synchronisés en temps réel

Méthode de mise en œuvre : via rsync+inot ify -Combinaison d'outils pour réaliser

Travail de préparation :

Tout d'abord, ajoutez une relation de confiance aux deux machines. La méthode spécifique a été introduite dans le précédent. article

Afficher les détails : linuxAjouter une relation de confiance et se connecter sans mot de passe

Nécessite une installationlogiciel :

1. logiciel de synchronisation

Nécessité d'installer

à la fois sur le serveur source et sur le serveur cible Serveur source : Il s'agit d'un client rsync, aucune configuration n'est requise

Serveur cible : Il s'agit un serveur rsync, il doit être configuré dans /etc/rsyncd.conf Contenu

2. Outil inotify-tools

Cet outil est un outil de surveillance de fichiers en temps réel et nécessite le système d'exploitation Linux. prise en charge du noyau. La prise en charge du noyau nécessite au moins la version 2.6.13

Vérifiez si le système d'exploitation le prend en charge, exécutez comme suit :

uname -r Afficher la version

Retour :

    2.6.32-358.6.1.el6.x86_64

Si la version 2.6.32 est supérieure à la 2.6.13, elle est supportée .

Exécution :

    ll /proc/sys/fs/inotify
    total 0
    -rw-r--r-- 1 root root 0 Oct 18 12:18 max_queued_events
    -rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_instances
    -rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_watches

S'il y a trois sorties, cela signifie qu'inotify est pris en charge par défaut et vous pouvez installer l'outil inotify-tools

Si ce n'est pas le cas. pris en charge, vous devez utiliser une nouvelle version de Linux. Si la version du système d'exploitation

répond aux exigences, elle peut être installée.

Après avoir installé inotify-tools, les deux fichiers suivants seront générés dans le répertoire d'installation correspondant :

    ll /usr/local/bin/
    total 88
    -rwxr-xr-x 1 root root 44327 Oct 10 15:32 inotifywait
    -rwxr-xr-x 1 root root 41417 Oct 10 15:32 inotifywatch

Cela signifie que l'installation est réussie.

Remarque : Inotify doit être installé sur le serveur source, et inotify n'a pas besoin d'être installé sur le serveur cible.

3. Scripts associés :

Créez un nouveau script sur le serveur source :

inotify_bak.sh

    #!/bin/bash
    src=/opt/test/
    /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src |  while read file
    do
          /usr/bin/rsync -arzuq $src 192.168.0.1::www/
          echo "  ${file} was rsynced" >>/opt/soft/log/rsync.log 2>&1
    done

Accordez les autorisations d'exécution. : chmod +x inotify_bak.sh

Ensuite, exécutez : nohup inotify_bak.sh & mettez-le en arrière-plan et exécutez

À propos du démarrage

serveur cible : démarrez d'abord le service d'arrière-plan rsync : /usr/bin/rsync --daemon

Serveur source : exécutez inotify_bak.sh &

Test :

Dans le répertoire du serveur source Créez de nouveaux répertoires et fichiers dans le script inotify_bak.sh et synchronisez-les avec le répertoire approprié du serveur cible

Vous pouvez afficher le fichier journal : /opt/soft/log/rsync .log La commande est la suivante : Observer la situation de synchronisation en temps réel.

    tail -f  /opt/soft/log/rsync.log

Résolution d'erreur :

/usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0: cannot open shared object file: No such file or directory

C'est parce que le fichier de la bibliothèque est introuvable, créez simplement un lien symbolique

ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn