Niveau :
Résumé : scp machine1:~/file machine2:~/
FXP
Le FXP est un détournement du protocole FTP. Le FTP utilisant une connexion différente pour les données et pour les commandes, il est possible d'ouvrir une connexion de commande sur 2 machines et de leur demander d'ouvrir la connexion de données entre elles deux, rien ne passe par vous. Explication plus détaillée.
En pratique, la plupart des clients ftp supportent ce système nativement (même en ligne de commande).
SCP
Maintenant supposons que vous n'ayez que ssh à disposition. Hé bien il est possible de faire le même genre de chose :
$ scp user1@machine1:/my/file/1 user2@machine2:/your/path
Le processus est alors le suivant :
- scp vous connecte sur machine 1 (avec mot de passe si besoin)
- puis depuis machine1, il tente de se connecter à user2@machine2 pour faire la copie (sans interaction cette fois).
Ceci a 2 inconvénients :
- si le flux ssh n'est pas ouvert de machine1 vers machine2 vous êtes coincés
- il faut que vous puissiez vous connecter de machine1 à machine2 sans mot de passe (avec une clé et un forward d'agent)
Si le flux est ouvert de machine2 vers machine1 (dans l'autre sens) ou si vous n'avez pas de clé ssh, vous pouvez aussi utiliser la commande suivante :
$ ssh user2@machine2 "scp user1@machine1:/my/file/1 /your/path"
Et si aucun flux n'est ouvert entre machine1 et machine2 il vous reste une dernière solution : passer par votre machine de commande. Pour ne pas avoir à stocker le fichier sur votre machine (transit uniquement) utilisez la commande suivante :
$ ssh user1@machine1 "cat /my/file/1" | ssh machine2 "cat > /your/path/1"
PS : Dans vos commandes scp, il est possible d'écrire "machine:" comme équivalent de "machine:~/"
PS2 : Dans vos commandes, si le nom d'un fichier local contient un ":", il vous faut donner un chemin contenant un / pour ne pas confondre avec un nom de machine. Ex:
$ scp machine:~/toto ./mon:repertoire/
Comments