Comparer 2 dossiers via ssh

vlad -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je souhaite vérifier que 2 dossiers sur 2 machines différentes sont bien identiques (sous-dossiers et fichiers inclus). Quel est le moyen le plus efficace de faire ça ? (avec rsync ?)

Dans le cas ou ils seraient différents, je voudrais pouvoir afficher les dossiers/sous-dossiers/fichiers qui diffèrent aussi.

Merci d'avance.

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 942
     
    Bonjour,

    Pour clarifier la réponse qui suit, je vais nommer les machines comme suit :
    • client
      : la machine qui fait office de client ssh ;
    • serveur1
      : l'une des deux machines dont tu veux récupérer l'arborescence
      /home/toto
      , et qui dispose d'un serveur ssh, à laquelle tu peux accéder avec le profil
      login1
      et qui dispose de droits suffisants pour explorer
      /home/toto
      ;
    • serveur2
      : l'une des deux machines dont tu veux récupérer l'arborescence
      /home/tata
      , et qui dispose d'un serveur ssh, à laquelle tu peux accéder avec le profil
      login2
      et qui dispose de droits suffisants pour explorer
      /home/tata
      ;


    Non,
    rsync
    n'est pas nécessaire et est "overkill" car cela va t'obliger à rapatrier au niveau de la machine client l'intégralité des deux dossiers à comparer, qui peuvent potentiellement être très volumineux.

    La manière la plus propre est d'utiliser
    ssh
    +
    find
    (ou
    parallel-ssh
    ) au niveau de client, stocker le résultat dans un fichier, puis comparer les deux fichiers ainsi créés :

    ssh login1@server1 find /home/toto > /tmp/server1_toto
    ssh login2@server2 find /home/tata > /tmp/server2_tata
    diff /tmp/server1_toto /tmp/server2_tata
    rm -f /tmp/server1_toto /tmp/server2_tata


    (Remplace
    serveur1
    (resp.
    serveur2
    ) par son FQDN ou son adresse IP).

    Afin éviter d'avoir à saisir les mots de passe nécessaires à ssh (au moment de se connecter à
    serveur1
    et
    serveur2
    ), il est d'utiliser une clé ssh. Il suffit de copier ta clé ssh par exemple avec
    ssh-copy-id
    , puis de lancer
    ssh-add
    au moment où tu ouvres ta session utilisateur sur
    client
    . Par la suite, tu peux même désactiver les authentifications par mot de passe au niveau des serveurs ssh afin de mieux les sécuriser. Pour plus de détails, tu peux regarder ce tutoriel.

    Bonne chance
    0