Maison > Opération et maintenance > exploitation et maintenance Linux > 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

黄舟
Libérer: 2017-06-07 10:31:00
original
2583 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal