Comparer 2 dossiers via ssh

Fermé
vlad - 18 nov. 2021 à 10:47
mamiemando Messages postés 33078 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 avril 2024 - 22 nov. 2021 à 14:36
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.
A voir également:

1 réponse

mamiemando Messages postés 33078 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 avril 2024 7 749
22 nov. 2021 à 14:36
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