web-dev-qa-db-fra.com

Comment différencier les répertoires sur ssh

J'essaie de comparer récursivement un répertoire de l'hôte local à un répertoire d'une machine Linux distante. Cependant, quand j'exécute la commande suivante:

diff -r 'ssh [email protected]:/home/admin' /home/admin

ça ne marche pas en disant:

diff: ssh [email protected]:/home/admin: aucun fichier ni répertoire de ce type

quelle est la bonne façon de comparer récursivement le contenu des répertoires?

Merci d'avance

42
Hesham Yassin

Si vous n'avez pas besoin de comparer les détails d'un fichier, obtenez simplement la différence de nom de fichier/répertoire, puis essayez ceci:

(Remarque: vous devez définir "Connexion SSH sans mot de passe". Pour plus de détails, consultez cette adresse URL: http://www.linuxproblem.org/art_9.html )

diff <(ssh [email protected] ls -R /home/admin) <(ls -R /home/admin)
39
BMW

Essayez d’utiliser "rsync" avec l’option "-n", qui effectue simplement un "essai" et vous indique ce que cela ferait.

21
Mark Setchell

Vous pouvez monter le répertoire distant via sshfs, puis vous pouvez utiliser diff -r pour comparer les deux répertoires à votre guise.

Vous pouvez également exécuter des commandes find similaires sur les deux machines pour imprimer les arborescences de fichiers (noms de fichiers, tailles et dates, par exemple), puis comparer les résultats des deux à l'aide de diff. Cela ne comparerait pas le contenu du fichier, bien sûr:

diff <(ssh Host find /home/admin -printf '"%8s %P\n"') \
     <(find /home/admin -printf '%8s %P\n')

Notez le double guillemet de la chaîne de format printf dans l'appel ssh. Une couche est supprimée par le relais ssh.

10
Alfe

Je trouve krusader très utile pour une telle tâche au cas où vous auriez besoin d’une interface graphique .Voir https://www.linux.com/news/synchronize-directories-komparator-and-kdiff3 pour plus de détails http : //krusador.org .

exemple de dossier compare

0
Hanan Shteingart