Comment utiliser la commande scp sous Linux

Comment utiliser la commande scp sous Linux

La commande scprend la copie de fichiers entre les machines Linux simple et sûre. Il utilise la sécurité SSH, mais la meilleure partie est que c’est simple. Si vous pouvez utiliser cp, vous pouvez utiliser scp.

Protocole de copie sécurisée et scp

Définissons quelques termes : il y a SCP et il y a scp. La lettre majuscule SCP signifie Secure Copy Protocol . Les minuscules scpsignifient sécurisé cp. En d’autres termes, SCP est un protocole et scpun programme.

scpa été conçu pour être un moyen sûr et fiable de copier des fichiers entre des ordinateurs Linux distants. Il utilise SSH pour établir des connexions sécurisées. SSH, ou shell sécurisé, est un protocole de réseau cryptographique souvent utilisé pour accéder et se connecter à des ordinateurs Linux distants. Sur les distributions Linux, la fonctionnalité SSH est fournie par OpenSSH.

SCP est quelque peu obsolète et des inquiétudes ont été soulevées quant à son utilisation ces jours-ci. Depuis OpenSSH 8.8, SCP est obsolète. Les implémentations modernes scputilisent le protocole de transfert de fichiers sécurisé par défaut. SSH est toujours utilisé pour les connexions sécurisées, mais les transferts de fichiers sont effectués via SFTP. Tout est invisible et se passe comme par magie sous le capot, et la scpsyntaxe reste la même.

Ce rsyncprogramme est préféré scp, mais vous pouvez rencontrer un ordinateur sur lequel il n’est pas rsyncinstallé et pour lequel vous n’avez pas les privilèges root, ce qui signifie que vous ne pouvez pas l’installer. Pour copier des fichiers de PC à PC sur un réseau hors ligne, scpc’est bien. Pour scpfonctionner, vous devez avoir SSH en cours d’exécution sur tous les ordinateurs vers et à partir desquels vous copierez.

Pour voir la version d’OpenSSH installée sur votre machine, tapez :

ssh -V

Copier un seul fichier

Comme la cpcommande standard, scpcopie les fichiers de l’emplacement source vers la destination. Pour copier un fichier sur un ordinateur distant, vous devez connaître l’adresse IP ou le nom de réseau de l’ordinateur distant. Vous devez également disposer d’informations d’identification pour un compte d’utilisateur avec des autorisations d’écriture pour l’emplacement où vous téléchargez le fichier.

Pour envoyer un fichier nommé « sample.txt » à un ordinateur nommé « fedora-34 » sur le réseau local, utilisez la syntaxe suivante :

scp. /sample.txt dave@fedora-34.local:/home/dave/Downloads/

L’équipe est composée de :

  • scp : commande scp
  • ./sample.txt : Le fichier que nous allons envoyer. C’est dans le répertoire courant.
  • dave@ : Le compte utilisateur sur la machine distante à laquelle nous allons envoyer le fichier.
  • fedora-34.local : nom de réseau de l’ordinateur distant.
  • :/home/dave/Downloads/ : L’emplacement où copier le fichier sur la machine distante. Notez les deux-points « : » qui séparent le nom de l’ordinateur et le chemin.

Vous serez invité à entrer le mot de passe du compte sur l’ordinateur distant, après quoi le fichier sera copié.

Si vous souhaitez que le fichier ait un nom différent sur la machine distante, vous pouvez ajouter le nom du fichier au chemin cible. Pour copier le même fichier et le nommer « autre-fichier.txt », utilisez la syntaxe suivante :

scp. /sample.txt dave@fedora-34.local:/home/dave/Downloads/different-file.txt

La commande scpécrasera automatiquement les fichiers existants, soyez donc prudent lorsque vous copiez des fichiers. Si un fichier portant le même nom que le fichier copié existe déjà sur l’ordinateur cible, il sera écrasé et perdu.

Si l’ordinateur cible n’utilise pas le port SSH 22 par défaut, vous pouvez utiliser le -Pparamètre (numéro de port) pour spécifier le numéro de port approprié.

Obtenir un fichier

Pour copier un fichier à partir d’un serveur distant, spécifiez simplement le serveur distant comme source et spécifiez le chemin local où vous souhaitez copier le fichier comme cible. Nous allons copier un fichier appelé « development-plan.md » de la machine distante vers le répertoire courant sur la machine locale.

scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md.

Si vous ajoutez un nom de fichier au chemin local, le fichier sera copié et recevra ce nom.

scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md. /dp-1.md

Le fichier est copié mais renommé avec le nom de fichier que nous avons spécifié.

ls -hl *.md

Copie de plusieurs fichiers

Copier plusieurs fichiers dans n’importe quelle direction est très facile. Vous pouvez lister autant de fichiers sources que vous le souhaitez. Ici, nous copions deux fichiers Markdown et un fichier CSV.

scp. /dp-1.md. /dp-2.md. /dp-3.csv dave@fedora-34.local:/home/dave/Downloads/

Trois fichiers sont copiés sur l’ordinateur distant. Vous pouvez également utiliser des caractères génériques. Cette commande fait la même chose que la commande précédente.

scp. /dp. dave@fedora-34.local:/home/dave/Downloads/

Copie récursive de répertoires

L’ -roption (récursive) vous permet de copier des arborescences de répertoires entières avec une seule commande. Nous avons placé deux fichiers dans un répertoire nommé « data » et créé un répertoire nommé « CSV » à l’intérieur du répertoire « data ». Nous avons placé le fichier CSV dans le répertoire « data/CSV ».

Cette commande copie les fichiers et recrée la structure de répertoires sur l’ordinateur distant.

scp -r. /data dave@fedora-34.local:/home/dave/Downloads/

Copier des fichiers entre des serveurs distants

Vous pouvez même demander de scpcopier des fichiers d’un serveur distant à un autre. La syntaxe est assez simple. Vous fournissez le nom de compte et l’adresse réseau du serveur source, ainsi que le nom de compte et l’adresse réseau du serveur de destination. Les fichiers sont copiés à partir du serveur source et copiés vers un emplacement sur le serveur de destination.

Bien que la syntaxe soit simple, s’assurer que tout le reste est en place demande un peu plus de réflexion. Évidemment, l’emplacement où vous essayez de copier des fichiers sur le serveur distant doit être accessible par le compte d’utilisateur que vous avez spécifié sur la ligne de commande. Et ce compte d’utilisateur doit avoir un accès en écriture à cet emplacement.

Une condition préalable plus subtile est que l’accès SSH doit être configuré entre votre machine locale et la machine source, et entre les serveurs source et de destination. Assurez-vous que vous pouvez utiliser SSH pour vous connecter au serveur cible à partir du serveur source. Si vous ne pouvez pas le faire, scpvous ne pourrez pas vous connecter.

La configuration de clés SSH pour permettre un accès authentifié mais sans mot de passe est de loin la méthode préférée. L’utilisation de mots de passe devient très vite déroutante, et comme vous êtes invité à entrer un mot de passe pour chaque compte utilisateur, cela ne vous permet pas d’automatiser entièrement le processus avec un script.

Nous configurons des clés SSH pour les comptes d’utilisateurs que nous utilisons sur chaque serveur distant. Cela a fourni un accès SSH transparent à l’autre serveur pour les deux utilisateurs. Cela nous permet de transférer des fichiers dans les deux sens en utilisant ces deux comptes d’utilisateurs.

Pour copier des fichiers du compte utilisateur « davem » sur la machine Manjaro vers le compte « dave » sur la machine Fedora à l’aide d’une scpcommande émise depuis notre machine Ubuntu locale, la syntaxe suivante est utilisée :

scp davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/

Nous revenons silencieusement à la ligne de commande. Rien n’indique que quoi que ce soit se soit passé. Partant du principe qu’aucune nouvelle n’est une bonne nouvelle, nous scpsignalons uniquement les erreurs pour cette copie à distance. Lors de la vérification de l’ordinateur Fedora, nous constatons que les fichiers de l’ordinateur Manjaro ont été copiés et récupérés.

Par défaut, les fichiers sont copiés directement de l’ordinateur source vers l’ordinateur de destination. Vous pouvez remplacer cela en utilisant l’ -3option (trois voies).

Avec cette option, les fichiers sont transférés de la cible vers la source via votre ordinateur local. Cela nécessite un accès SSH transparent de votre machine locale à la machine cible.

scp -3 davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/

Il n’y a toujours aucune indication que quoi que ce soit se soit passé, même lors du transfert de fichiers via votre ordinateur local. La preuve du pudding, bien sûr, est de vérifier l’ordinateur cible.

Autres options

L’ -poption (préserver les attributs du fichier) conservera la création du fichier d’origine, le propriétaire et les indicateurs d’accès pour les fichiers téléchargés. Ils auront les mêmes métadonnées que les fichiers d’origine sur l’ordinateur source.

Si vous voyez des messages d’erreur, essayez de réessayer la commande et d’utiliser l’ -vindicateur (verbeux) pour voir les détails de la tentative de transfert. Vous devriez être en mesure de déterminer le point de défaillance dans la sortie.

L’ -Coption (compresser) compresse les fichiers lorsqu’ils sont copiés et les décompresse lorsqu’ils sont reçus. C’est quelque chose qui remonte à l’ère de la lenteur des communications par modem entre ordinateurs. La réduction de la taille de la charge utile peut réduire le temps de transmission.

Actuellement, le temps consacré à la compression et à la décompression des fichiers est probablement supérieur à la différence entre les transferts compressés et non compressés. Mais comme scpil est préférable de l’utiliser pour copier des fichiers entre ordinateurs sur le même réseau local, la vitesse de transfert ne devrait pas être un gros problème.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *