GNU/Linux >> Tutoriels Linux >  >> Linux

Comment synchroniser les répertoires locaux et distants sous Linux

Ce didacticiel explique comment synchroniser des répertoires locaux et distants sous Linux à l'aide de Lsyncd. (Démon de synchronisation en direct). En utilisant Lsyncd, nous pouvons mettre en miroir des répertoires locaux vers des répertoires locaux ou des répertoires locaux vers des répertoires distants. Il est pratique lorsque vous souhaitez synchroniser des données entre des répertoires fréquemment mis à jour avec de nouveaux contenus. Lsyncd est conçu pour synchroniser une arborescence de répertoires locaux avec un profil bas des modifications attendues sur un miroir distant. Il est particulièrement utile pour synchroniser les données d'une zone sécurisée vers une zone moins sécurisée.

Installer Lsyncd sous Linux

Sur Debian et ses dérivés comme Ubuntu, Linux Mint exécute la commande suivante pour installer Lsyncd :

$ sudo apt-get install lsyncd

Sur RHEL, CentOS, vous devez d'abord activer le référentiel EPEL.

$ sudo yum install epel-release

Ensuite, installez Lsyncd à l'aide de la commande :

$ sudo yum install lsyncd

Configuration de Lsyncd sur Debian et Ubuntu et dérivés

Lsyncd ne fournit aucun fichier de configuration par défaut dans les systèmes basés sur DEB. Nous devons le créer manuellement. Cependant, Lsyncd inclut des exemples de fichiers de configuration qui sont utiles pour avoir une idée de base de ce qu'il fait/comment il fait la synchronisation. Les exemples de fichiers de configuration se trouvent sous "/usr/share/doc/lsyncd-*/examples" répertoire.

$ ls /usr/share/doc/lsyncd/examples/

Exemple de résultat :

lbash.lua lgforce.lua lpostcmd.lua lrsyncssh.lualecho.lua limagemagic.lua lrsync.lua

Comme vous le voyez dans la sortie ci-dessus, chaque fichier de configuration se termine par .lua extension. C'est parce que le fichier de configuration lsync est écrit en utilisant le langage de programmation Lua . Examinons un exemple de fichier de configuration.

$ cat /usr/share/doc/lsyncd/examples/lrsync.lua

Voici à quoi ressemble le fichier de configuration Lrsync :

------ Fichier de configuration utilisateur pour lsyncd.---- Exemple simple pour rsync par défaut.--settings ={ statusFile ="/tmp/lsyncd.stat", statusInterval =1,}sync{ default. rsync, source="src", cible="trg",}

Configuration de Lsyncd sur RHEL et CentOS

Sur les systèmes RHEL et CentOS, le fichier de configuration Lsyncd sera créé automatiquement. Vous pouvez afficher le contenu de ce fichier à l'aide de la commande :

$ cat /etc/lsyncd.conf

De plus, les exemples de fichiers de configuration sont disponibles à l'emplacement suivant.

$ ls /usr/share/doc/lsyncd-2.1.5/examples/

Synchroniser les répertoires locaux et distants sous Linux à l'aide de Lsyncd

Comme indiqué précédemment, Lyncd peut synchroniser le contenu de deux répertoires locaux et d'un répertoire local vers un répertoire distant. Dans un premier temps, nous verrons comment synchroniser les répertoires locaux.

1. Synchroniser les répertoires locaux sur Debian, Ubuntu

Maintenant, nous allons synchroniser deux répertoires locaux.

Créons deux répertoires avec quelques exemples de contenu.

$ sudo mkdir rép_source
$ sudo mkdir rép_dest

Créez des fichiers aléatoires dans le répertoire source_dir :

$ sudo touch rép_source/fichier{1..10}

En option, vous pouvez créer des fichiers journaux pour Lysyncd. Ceci est juste facultatif. Si vous ne voulez pas de fichiers journaux, ignorez cette étape.

$ sudo mkdir /var/log/lsyncd
$ sudo touch /var/log/lsyncd/lsyncd.{log,status}

Ensuite, créez un fichier de configuration pour Lsyncd :

$ sudo mkdir /etc/lsyncd
$ sudo nano /etc/lsyncd/lsyncd.conf.lua

Éditez/modifiez les lignes suivantes :

settings { logfile ="/var/log/lsyncd/lsyncd.log", statusFile ="/var/log/lsyncd/lsyncd.status"}sync { default.rsync, source ="/home/sk/source_dir ", target ="/home/sk/dest_dir",}

Remplacez le chemin des répertoires source et cible par vos propres valeurs. Enregistrez et fermez le fichier.

Activez et démarrez ou redémarrez le service Lsyncd à l'aide des commandes :

$ sudo systemctl enable lsyncd
$ sudo systemctl redémarrer lsyncd

Maintenant, vérifiez le contenu des répertoires source_dir et dest_dir.

$ ls rép_source/

Exemple de résultat :

fichier1 fichier10 fichier2 fichier3 fichier4 fichier5 fichier6 fichier7 fichier8 fichier9

Vérifiez le contenu du répertoire dest_dir :

$ ls rép_dest/

Exemple de résultat :

fichier1 fichier10 fichier2 fichier3 fichier4 fichier5 fichier6 fichier7 fichier8 fichier9

Voir? Nous avons créé des fichiers uniquement dans le répertoire source_dir et le contenu de ce répertoire a été automatiquement synchronisé avec le répertoire dest_dir.

Vous pouvez également consulter les fichiers journaux pour vérifier si la réplication est terminée ou non.

$ tail -10 /var/log/lsyncd/lsyncd.log

Exemple de résultat :

Sat Apr 15 17:07:34 2017 Normal :démarrage récursif rsync:/home/sk/source_dir/ -> /home/sk/dest_dir/Sat Apr 15 17:07:34 2017 Normal :Démarrage de "/home /sk/source_dir/" terminé.

Vérifiez le fichier d'état Lsyncd :

$ de plus /var/log/lsyncd/lsyncd.status

Exemple de résultat :

Rapport d'état de Lsyncd au sam. 15 avril 17:07:44 2017Sync1 source=/home/sk/source_dir/Il y a 0 retardsSauf :rien.  Télécharger - Ebook gratuit :"L'administration avancée de GNU/Linux" 

2. Synchroniser les répertoires locaux sur RHEL, CentOS

Modifier le fichier de configuration Lsyncd :

$ sudo nano /etc/lsyncd.conf

Éditez et modifiez les lignes suivantes :

------ Fichier de configuration utilisateur pour lsyncd.---- Exemple simple pour rsync par défaut, mais l'exécution se déplace sur la cible.---- Pour plus d'exemples, voir /usr/share/doc/lsyncd */exemples/-- paramètres   fichier journal ="/var/log/lsyncd.log",  statusFile ="/var/log/lsyncd.status" } synchroniser{  default.rsync, source ="/root/source_dir",  cible ="/root/dest_dir", 

Remplacez le chemin des répertoires source et cible par vos propres valeurs. Enregistrez et fermez le fichier.

Activez et démarrez le service Lsyncd à l'aide des commandes :

$ sudo systemctl enable lsyncd
$ sudo systemctl start lsyncd

Maintenant, vérifiez le contenu des répertoires source_dir et dest_dir.

$ ls rép_source/

Exemple de résultat :

fichier1 fichier10 fichier2 fichier3 fichier4 fichier5 fichier6 fichier7 fichier8 fichier9

Vérifiez le contenu du répertoire dest_dir :

$ ls rép_dest/

Exemple de résultat :

fichier1 fichier10 fichier2 fichier3 fichier4 fichier5 fichier6 fichier7 fichier8 fichier9

Bravo! Le contenu de source_dir a été correctement synchronisé avec le répertoire dest_dir.

Vous pouvez également consulter les fichiers journaux pour vérifier si la réplication est terminée ou non.

$ tail -10 /var/log/lsyncd.log

Vérifiez le fichier d'état Lsyncd :

$ de plus /var/log/lsyncd.status

3. Synchroniser les répertoires distants sur les systèmes Debian, Ubuntu

Nous devons configurer SSH sans mot de passe connexion. En effet, Lsyncd répliquera automatiquement le contenu du répertoire local dans un répertoire distant sans intervention de l'utilisateur.

$ sudo su
# ssh-keygen -t rsa

N'entrez aucune phrase de passe. Appuyez simplement sur ENTER pour accepter les valeurs par défaut.

Génération de la paire de clés rsa publique/privée.Entrez le fichier dans lequel enregistrer la clé (/root/.ssh/id_rsa) :Répertoire créé '/home/sk/.ssh'.Entrez la phrase secrète (vide s'il n'y a pas de phrase secrète) :Saisissez à nouveau la même phrase de passe :votre identification a été enregistrée dans /root/.ssh/id_rsa.Votre clé publique a été enregistrée dans /root/.ssh/id_rsa.pub. l'image aléatoire est :+---[RSA 2048]----+|o*=.++.. ... ||E..*.+o. o + ||+o+ + =. o O + ||+ .B o =o * + . ||..+ + o S + . || . o + o || o || || |+----[SHA256]-----+

Maintenant, copiez la clé publique SSH sur votre système distant :

# ssh-copy-id [protégé par e-mail]

Exemple de résultat :

/usr/bin/ssh-copy-id :INFO :Source de la ou des clés à installer :"/root/.ssh/id_rsa.pub" L'authenticité de l'hôte '192.168.43.150 (192.168.43.150) ' ne peut pas être établie. L'empreinte digitale de la clé ECDSA est SHA256:U7I0O1OOzzbHFlhIG0HoGDr1usHzLBju6Jmr6bUB9Es.Êtes-vous sûr de vouloir continuer à vous connecter (oui/non) ? yes/usr/bin/ssh-copy-id :INFO :tentative de connexion avec la ou les nouvelles clés, pour filtrer celles qui sont déjà installées/usr/bin/ssh-copy-id :INFO :1 clé( s) restent à installer -- si vous êtes invité maintenant, c'est d'installer le mot de passe de la nouvelle clé [email protected] :Nombre de clé(s) ajoutée(s) :1 Essayez maintenant de vous connecter à la machine, avec :"ssh '[email protected] protected]'" et vérifiez que seules les clés que vous vouliez ont été ajoutées.

Ici, 192.168.43.150 est l'adresse IP du système distant.

Désormais, vous pourrez vous connecter en SSH à votre système distant sans avoir à saisir le mot de passe :

# ssh [protégé par e-mail]

Créez un répertoire cible dans le système distant avec la commande :

# mkdir remotesync

Déconnectez-vous du système distant :

# sortie

Ensuite, modifiez le fichier de configuration Lsyncd sur la machine source :

$ sudo nano /etc/lsyncd/lsyncd.conf.lua

Éditez/modifiez les lignes suivantes :

settings { logfile ="/var/log/lsyncd/lsyncd.log", statusFile ="/var/log/lsyncd/lsyncd.status"}sync { default.rsync, source ="/home/sk/source_dir ", host ="192.168.43.150", targetdir ="/root/remotesync",}

Ici, 192.168.43.150 est l'adresse IP de mon hôte distant. Et, /root/remotesync/ est le répertoire de destination de mon système distant. Remplacez les valeurs par les vôtres. Enregistrez et fermez le fichier.

Redémarrez le service Lsyncd pour répliquer le contenu du répertoire source vers la destination.

$ sudo systemctl redémarrer lsyncd

Maintenant, connectez-vous en SSH à votre système distant :

$ ssh [protégé par e-mail]

Et vérifiez le contenu du répertoire cible (c'est-à-dire /root/remotesync/ dans notre cas). Vous verrez que tous les fichiers du répertoire source du système local ont été répliqués dans le répertoire cible du système de destination.

[email protected] ~]# ls remotesync/ fichier1 fichier10 fichier2 fichier3 fichier4 fichier5 fichier6 fichier7 fichier8 fichier9

Cette procédure est la même pour les systèmes RHEL et CentOS. Configurez la connexion SSH sans mot de passe et assurez-vous que vous avez modifié les chemins source et cible corrects dans le fichier de configuration principal de Lsyncd (/etc/lsyncd.conf) dans votre système RHEL ou CentOS, et le reste des étapes est identique.

Télécharger - Guide gratuit :"10 façons simples de restaurer votre système Linux"

Vous savez comment synchroniser des répertoires locaux et distants sous Linux à l'aide de Lsyncd. Comme vous pouvez le voir, c'est une méthode très simple et directe.

J'espère que cela vous aidera.


Linux
  1. Comment rechercher et supprimer des répertoires de manière récursive sous Linux

  2. Comment synchroniser des répertoires à l'aide de Lsyncd sur Ubuntu 20.04

  3. Comment archiver des fichiers et des répertoires sous Linux [Partie 2]

  4. Comment archiver des fichiers et des répertoires sous Linux [Partie 1]

  5. Comment renommer Git Branch Local et Remote

Comment synchroniser des fichiers et des répertoires à l'aide de Zaloha.sh

Comment sauvegarder des fichiers et des répertoires à l'aide de Rsync sous Linux

Comment rechercher et supprimer des répertoires vides sous Linux

Lsyncd - Synchroniser les répertoires locaux avec Linux distant

Comment copier des fichiers et des répertoires dans un terminal Linux

Comment supprimer des fichiers et des répertoires à l'aide de la ligne de commande Linux