219 votes

Comment faire un diff sur ssh ?

Comment puis-je différencier des fichiers/dossiers entre machines si la seule connectivité disponible est ssh ?

192voto

Kyle Brandt Points 81077

Vous pouvez le faire avec l'outil de Bash substitution de processus :

 diff foo <(ssh myServer 'cat foo')

Ou, si les deux sont sur des serveurs distants :

diff <(ssh myServer1 'cat foo') <(ssh myServer2 'cat foo')

126voto

Alexey Timanovsky Points 3271

J'ai enfin trouvé une bonne solution : vimdiff.

vimdiff /path/to/file scp://remotehost//path/to/file

grâce à http://linux.spiney.org/remote_diff_with_vim_and_ssh voir aussi http://www.vim.org/scripts/scripts.php?script_id=1075 .

74voto

mblsha Points 305

Si vous voulez juste voir quels fichiers sont différents, plutôt qu'une comparaison des fichiers actuels, vous pouvez utiliser la méthode suivante rsync --dry-run

19voto

John C Points 73

Voici une autre recette de ligne de commande rapide et sale. Contrairement à la réponse choisie, elle fonctionne à l'intérieur des makefiles :

ssh [login]@[host] "cat [remote file]" | diff - "[local file]"

11voto

Ciacciu Points 348

Utiliser scp pour amener les fichiers sur une machine commune et les différencier là ?

Ou, si vous voulez juste savoir si les fichiers sont différents ou non, hachurez-les avec md5sum sur chaque machine.

Vous pouvez également envisager quelque chose comme SSHFS mais je ne sais pas comment un algorithme comme diff se comporte par rapport à cela.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X