Comment transférer des fichiers d'une machine à une autre via le protocole SSH.
SCP est le nom d'une commande fournis par le paquet "openssh-client". La commande permet d'échanger des fichiers et des dossiers entre un client SSH et un serveur SSH. Il est installé par défaut sur la plupart des distribution linux.
Note:
Si je suis sur la Machine User et que je souhaite envoyer le fichier
/home/user/data/Fichier2 dans le répertoire /var/www du serveur Linux,
j’utilise la commande suivante.
scp /home/user/data/Ficher2 root@www.distant.fr:/var/www/
c'est assez similaire à la commande "cp" dans laquelle on spécifie la source, puis la destination. Entre les deux, on insère "root@www.distant.fr:".
Ce qui permet à la fois de se logguer (connexion SSH oblige) et de spécifier l'adresse du serveur cible afin d'y déposer notre fichier. Le ":" permet de spécifier le chemin sur la machine cible. S'il n'est pas spécifié, les fichiers atterriront dans le dossier de l'utilisateur (/root pour l'utilisateur root, /home/user pour l'utilisateur "user", etc.).
Note : Si le chemin n'existe pas, nous obtiendrons une erreur de la part de SSH.
Si l'on souhaite effectuer l'opération inverse, c’est-à-dire télécharger un fichier du serveur Linux vers la Machine User.
On utilise scp de cette façon :
scp root@www.distant.fr:/var/www/Fichier2 /home/user/data/
Même construction que précédement mais la source et la destination sont inversées. On spécifie d'abord l'utilisateur avec lequel se connecter en SSH et le chemin sur le serveur cible puis le dossier local dans lequel nous souhaitons entreposer les fichiers téléchargés.
Avec cette commande, lorsqu'on transfère un répertoire via scp, les
fichiers et les dossiers qu'il contient seront également copiés et réorganisés de la même façon chez sur machine cible. Pour cela, il suffit d'ajouter l'option "-r" juste après "scp", exemple :
scp -r /home/user/data/ root@www.distant.fr:/var/www/
Ici, on retrouve également la même structure que précédemment, mais
cette fois-ci tous les dossiers et fichiers présents dans le dossier data seront transférés vers le serveur.
Et voila, c'est super non !?