Formation PUB110 : Linux, 2018 Opérations diverses

6.4 Copier un fichier sur une machine Linux à partir d'un autre ordinateur et vice-versa


Dans cette fiche :

Commande scp

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 :

Syntaxe sur le terminal de l'ordinateur

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.

Copie de l'ordinateur vers le Raspberry Pi

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.

Terminal de l'ordinateur

scp dossierlocal/monfichier.extension pi@192.168.1.145:/dossierdistant/sous-dossier

Copier du Raspberry Pi vers l'ordinateur

Pour copier un fichier du Pi vers votre ordinateur, la machine distante sera la source.

Terminal de l'ordinateur

scp pi@192.168.1.145:/dossierdistant/sous-dossier/monfichier.extension /dossierlocal

Copie d'un dossier complet

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 :

Terminal de l'ordinateur

scp -r /dossierlocal pi@192.168.1.145:/dossierdistant

Pour copier le dossier du Pi vers l'ordinateur :

Terminal de l'ordinateur

scp -r pi@192.168.1.145:/dossierdistant /dossierlocal

Accès qui nécessite un port particulier

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.

Terminal de l'ordinateur

scp -P 22222 root@192.168.1.145:/dossierdistant/sous-dossier/monfichier.extension /dossierlocal

ou, pour copier de l'ordinateur vers le Pi :

Terminal de l'ordinateur

scp -P 22222 /dossierlocal root@192.168.1.145:/dossierdistant/sous-dossier/monfichier.extension

Erreur serveur non trouvé

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.
Terminal

scp -O -P 22222 root@192.168.1.145:/dossierdistant/sous-dossier/monfichier.extension /dossierlocal

Copie à l'aide d'une clé USB

Pour effectuer une copie de fichier à l'aide d'une clé USB, suivez ces étapes :

  • Copiez le fichier de l'ordinateur sur une clé USB puis insérez la clé dans le Raspberry Pi.
  • Accédez à la ligne de commande du Pi soit via SSH, soit en y branchant un écran et un clavier.
  • Vous devez monter la clé pour que son contenu soit accessible.
    • Si c'est la première fois que vous utilisez une clé USB sur le Pi, créez le dossier de montage.
      Terminal

      sudo mkdir /mnt/cleusb

    • Vous pouvez maintenant monter la clé. Généralement, elle est reconnue comme /dev/sda1 mais elle pourrait être autre chose, par exemple /dev/sdb1.
      Terminal

      sudo mount /dev/sda1 /mnt/cleusb

  • Copiez le fichier de la clé USB vers le dossier désiré sur le Pi.
    Terminal

    cp /mnt/cleusb/monfichier.extension /dossier/sous-dossier

  • Démontez la clé USB avant de la retirer du Pi.
    Terminal

    sudo umount /dev/sda1

Source

1. « scp(1) — Linux manual page ». man7.org. https://man7.org/linux/man-pages/man1/scp.1.html

Pour plus d'information

« SCP (Secure Copy) ». Raspberry Pi. https://www.raspberrypi.org/documentation/remote-access/ssh/scp.md

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre