Dans cette fiche :
La commande scp (Secure CoPy), est très intéressante pour copier des fichiers d'un ordinateur vers un autre.
Il est possible de l'utiliser, par exemple, pour copier un fichier d'un ordinateur vers un Raspberry Pi ou vice-versa.
On appellera machine locale la machine (l'ordinateur ou le Pi) sur laquelle on entre la commande.
On appellera machine distante l'autre machine impliquée dans l'échange.
Un le serveur SSH doit être activé sur la machine distante. C'est généralement le cas sur le Raspberry Pi mais pas sur l'ordinateur.
C'est pourquoi la commande sera entrée sur le terminal de l'ordinateur, peu importe quelle machine contient le fichier à copier.
Le format de la commande scp est :
scp source cible
Pour identifier la machine distante, on fera précéder la source ou la cible, selon le cas, par usager@adresse IP de la machine distante, suivi de deux points. Des exemples sont donnés dans les sections qui suivent.
Pour copier un fichier à partir de l'ordinateur vers le Pi, la machine distante sera la cible.
Entrez cette commande en prenant soin de changer pi pour le nom de votre usager sur Raspberry Pi OS et l'adresse IP pour celle du Pi.
scp dossierlocal/monfichier.extension pi@192.168.1.145:/dossierdistant/sous-dossier
Pour copier un fichier du Pi vers votre ordinateur, la machine distante sera la source.
scp pi@192.168.1.145:/dossierdistant/sous-dossier/monfichier.extension /dossierlocal
L'option -r permet de copier un dossier complet entre le Raspberry Pi et l'ordinateur.
Il faut spécifier le nom du dossier à copier sans le faire suivre d'une barre oblique ni d'un astérisque.
Pour copier le dossier de l'ordinateur vers le Pi :
scp -r /dossierlocal pi@192.168.1.145:/dossierdistant
Pour copier le dossier du Pi vers l'ordinateur :
scp -r pi@192.168.1.145:/dossierdistant /dossierlocal
Certains systèmes, par exemple Home Assistant, exigent l'utilisation d'un port particulier pour un accès SSH. Ce port devra lui aussi être utilisé avec scp.
Dans cet exemple, j'ai travaillé avec l'usager root puisque c'est lui qui est utilisé sous Home Assistant.
scp -P 22222 root@192.168.1.145:/dossierdistant/sous-dossier/monfichier.extension /dossierlocal
ou, pour copier de l'ordinateur vers le Pi :
scp -P 22222 /dossierlocal root@192.168.1.145:/dossierdistant/sous-dossier/monfichier.extension
Lors de l'utilisation de la commande scp, le serveur SSH pourrait être configuré pour travailler par défaut en mode sécurisé.
Vous le saurez si vous obtenez le message d'erreur suivant :
sh: /usr/libexec/sftp-server: not found
scp: Connection closed
Vous pourrez régler le problème en ajoutant l'option -O.
Selon la documentation de scp1 :
-O : Use the legacy SCP protocol for file transfers instead of the SFTP protocol. Forcing the use of the SCP protocol may be necessary for servers that do not implement SFTP, for backwards-compatibility for particular filename wildcard patterns and for expanding paths with a ‘~’ prefix for older SFTP servers.
scp -O -P 22222 root@192.168.1.145:/dossierdistant/sous-dossier/monfichier.extension /dossierlocal
Pour effectuer une copie de fichier à l'aide d'une clé USB, suivez ces étapes :
sudo mkdir /mnt/cleusb
sudo mount /dev/sda1 /mnt/cleusb
cp /mnt/cleusb/monfichier.extension /dossier/sous-dossier
sudo umount /dev/sda1
1. « scp(1) — Linux manual page ». man7.org. https://man7.org/linux/man-pages/man1/scp.1.html
« SCP (Secure Copy) ». Raspberry Pi. https://www.raspberrypi.org/documentation/remote-access/ssh/scp.md
▼Publicité