rsync avec des fichiers entre deux serveurs distants, obtenez une erreur indiquant commande rsync ne trouve pas sur le serveur distant
Je suis en train de rsync fichiers entre deux serveurs avec
rsync -avlzp /source user@server:/destination
mais à la place j'ai des erreurs indiquant
bash: rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(635) [sender=3.0.2]
mais rsync est installé sur les deux serveurs. Ce que je fais mal? J'ai aussi essayé de
rsync -av -e "ssh -l ssh-user" /source server:/destination
avec le même résultat.
Je suis principalement en essayant d'utiliser rsync afin qu'il copie seulement les différences, si elles existent...
Grâce
OriginalL'auteur Silfheed | 2009-04-08
Vous devez vous connecter pour publier un commentaire.
rsync peut-être dans le chemin d'accès sur la machine distante lors de l'exécution d'un shell interactif, mais pas lors de l'exécution de rsync par ssh (avec un non-shell interactif). .bashrc est normalement exécuté pour shell interactif, par exemple, si votre chemin est définie, elle ne sera pas analysé lors de l'exécution de
rsync --server
sur l'extrémité distante. Essayez de /etc/profile. Voir bash(1) pour plus de détails.Vous pouvez utiliser
--rsync-path
pour spécifier le chemin d'accès à la rsync binaire sur la machine distante.--rsync-path
eu ce travail pour moi.OriginalL'auteur crb
Il y a beaucoup de bonnes informations autour de ce problème, y compris la réponse ci-dessus. Mais dans mon cas, je suis administrateur sur la source et la destination des machines, et j'ai voulu comprendre ce qui se passait et de ce "droit" configuration des options serait de faire de ce problème. Je n'ai pas été tout à fait réussi, mais il semble probable que d'autres peuvent trouver cette information utile.
Que la réponse ci-dessus, les états, rsync peut-être dans le chemin d'accès sur la machine distante lors de l'exécution d'un shell interactif, mais pas lors de l'exécution de rsync par ssh. Comme Siddesh notes à http://siddesh-bg.blogspot.com/2009/02/rsync-command-not-found-error-even.html cela peut être résolu en spécifiant explicitement le chemin d'accès à distance rsync à partir de votre shell:
Mais en tant qu'administrateur j'ai voulu résoudre le problème, et non pas simplement le contourner. OldSchool posté un dépannage utiles approche à https://groups.google.com/group/comp.unix.solaris/browse_thread/thread/0a06a4d382d752d8?pli=1
Il vous suggérons de découvrir ce shell est exécuté sur la machine distante, alors ce CHEMIN d'accès a été établie:
Tom Feiner a un poste de nice à Pourquoi un SSH la commande à distance de moins de variables d'environnement, puis lors de l'exécuter manuellement? qui traite de l'environnement de l'établissement de la SSH exécution d'une commande shell.
OldSchool a également noté que "l'homme sshd_config" fournit des informations sur la façon dont une session ssh obtient un environnement. Le sshd_config paramètre "PermitUserEnvironment" peut être réglé pour permettre à l'utilisateur ~/.ssh/environnement sur le côté serveur et des options de l'environnement dans le AuthorizedKeysFile dossier soit traité par sshd. La valeur par défaut est no.
Donc, à défaut sshd_config paramètres le chemin va être construit par votre shell par défaut. Si votre commande ssh demande une session interactive (ssh user@host) puis sur le serveur distant par défaut le shell va faire une connexion interactive, ce qui se traduira probablement par le CHEMIN que vous attendez. Mais si vous êtes en train de lancer une session ssh pour rsync (rsync -av --rsync-path=/usr/local/bin/rsync -e ssh-l ssh de l'utilisateur" /source serveur:/destination), puis le serveur distant vous donne un SSH exécution d'une commande shell qui est un non-shell interactif. Dans mon cas, la distance non-interactive shell (bash) n'est pas de l'exécution de /etc/profile, car il ne fait que pour le shell interactif ou non de shell interactif avec l'option --login. Je pourrais le forcer comme ceci:
J'ai également étudié l'Daniel Barrett & Richard Silverman "SSH Secure Shell" (O'Reilly, 2001) et de définir un CHEMIN d'accès dans /etc/ssh/sshrc qui je l'espère, faire rsync disponible à la commande SSH exécution des coquilles, mais, /etc/ssh/sshrc est exécutée avant que les utilisateurs de shell ou de commande est invoquée, et apparemment, c'est l'environnement ne sont pas transmises à qui de shell ou de commande.
À ce point, je vais être satisfaits avec le rsync option de ligne de commande, c'est à dire:
parce que je crains que si je change le sshd_config paramètre "PermitUserEnvironment" alors je vais probablement pas un audit de sécurité sur mes serveurs. Je peut revoir cette après j'ai plus d'expérience avec notre organisation des audits de sécurité.
OriginalL'auteur Larry Talley