Comment utiliser set et pipefail dans les scripts Bash sous Linux
Agence web » Actualités du digital » Comment utiliser la commande scp sous Linux

Comment utiliser la commande scp sous Linux

La scp La commande facilite et sécurise la copie de fichiers entre ordinateurs Linux. Il utilise la sécurité SSH, mais surtout, il est simple. Si vous pouvez utiliser cpvous pouvez utiliser scp.

Le protocole de copie sécurisée et scp

Définissons quelques termes : il y a SCP et il y a scp. Le SCP majuscule signifie le protocole de copie sécurisée. La minuscule scp est synonyme de sécurité cp. En d’autres termes, SCP est un protocole et scp est un programme.

scp a été conçu pour être un moyen sûr et sécurisé 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 un peu long dans la dent, et des inquiétudes ont été exprimées concernant son utilisation de nos jours. Depuis OpenSSH version 8.8, SCP est considéré comme obsolète. Les implémentations modernes de scp par défaut à l’aide du protocole de transfert de fichiers sécurisé par défaut. SSH est toujours utilisé pour la connexion sécurisée, mais les transferts de fichiers sont gérés par SFTP. Tout cela est invisible et se passe comme par magie sous le capot, et le scp la syntaxe est restée la même.

La rsync programme est préféré à scp mais vous pouvez rencontrer un ordinateur qui n’a pas rsync installé, et pour lequel vous n’avez pas les privilèges root, ce qui signifie que vous ne pouvez pas continuer et l’installer. Pour copier des fichiers d’un ordinateur à un autre sur un réseau autonome, scp est parfaitement bien. Pour scp pour fonctionner, vous devez avoir SSH en cours d’exécution sur tous les ordinateurs vers et depuis lesquels vous copierez.

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

ssh -V

Obtenir la version d'OpenSSH

Copie d’un seul fichier

Comme la norme cp commande, scp copie les fichiers du la source emplacement à la cible emplacement. 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 des informations d’identification d’un compte d’utilisateur disposant de privilèges d’écriture pour l’emplacement auquel vous envoyez le fichier.

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

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

Copie d'un seul fichier sur un ordinateur distant

La commande est composée de :

  • scps: La commande scp
  • ./exemple.txt: Le fichier que nous allons envoyer. C’est dans le répertoire courant.
  • dave @: Le compte d’utilisateur sur l’ordinateur distant auquel nous allons envoyer le fichier.
  • fedora-34.local: nom de réseau de l’ordinateur distant.
  • :/home/dave/Téléchargements/: L’emplacement où copier le fichier sur l’ordinateur distant. Notez les deux-points « : » qui séparent le nom de l’ordinateur et le chemin.

Vous serez invité à saisir le mot de passe du compte sur l’ordinateur distant, puis le fichier sera copié.

Si vous souhaitez que le fichier ait un nom différent sur l’ordinateur distant, vous pouvez ajouter un nom de fichier au chemin cible. Pour copier le même fichier et le nommer « fichier-différent.txt », utilisez cette syntaxe :

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

Copie d'un seul fichier sur un ordinateur distant avec un nouveau nom

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

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

Récupération d’un seul fichier

Pour copier un fichier de un serveur distant, mettez simplement le serveur distant comme source et mettez le chemin local où vous voulez que le fichier soit copié comme cible. Nous allons copier un fichier appelé « development-plan.md » de l’ordinateur distant vers le répertoire actuel de l’ordinateur local.

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

Copie d'un seul fichier d'un serveur distant vers le répertoire courant de l'ordinateur local

Si vous ajoutez un nom de fichier au chemin local, le fichier est copié et reçoit ce nom.

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

Copie d'un seul fichier d'un serveur distant vers le répertoire courant de l'ordinateur local avec un nouveau nom

Le fichier est copié mais renommé en notre nom de fichier spécifié.

ls -hl *.md

Copier plusieurs fichiers

Copier plusieurs fichiers dans les deux sens est facile. Vous pouvez lister autant de fichiers source 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/

Copie de plusieurs fichiers nommés sur un ordinateur distant

Les trois fichiers sont copiés sur l’ordinateur distant. Vous pouvez également utiliser des caractères génériques. Cette commande fait exactement la même chose que la dernière commande.

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

Copie de plusieurs fichiers sur un ordinateur distant à l'aide de caractères génériques dans le nom de fichier

Copie récursive de répertoires

La -r (récursif) vous permet de copier des arborescences de répertoires entières avec une seule commande. Nous avons placé deux fichiers dans un répertoire appelé « data » et créé un répertoire appelé « CSV » à l’intérieur du répertoire « data ». Nous avons placé un 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/

Copie d'une arborescence de répertoires sur un ordinateur distant

Copier des fichiers entre des serveurs distants

Vous pouvez même instruire scp pour copier 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 et le nom de compte et l’adresse réseau du serveur cible. Les fichiers sont copiés à partir du serveur source et copiés à l’emplacement sur le serveur cible.

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 les fichiers sur le serveur distant doit être accessible par le compte d’utilisateur que vous spécifiez sur la ligne de commande. Et ce compte d’utilisateur doit avoir des autorisations d’écriture sur cet emplacement.

Une condition préalable plus subtile est que l’accès SSH doit être configuré entre votre ordinateur local et l’ordinateur source, ainsi qu’entre les serveurs source et cible. Assurez-vous que vous pouvez utiliser SSH pour vous connecter au serveur cible depuis le serveur source. Si tu ne peux pas faire ça, scp ne pourra pas se connecter.

La configuration de clés SSH afin que vous puissiez utiliser 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 rapidement désordonnée et, comme vous êtes invité à entrer le mot de passe pour chaque compte d’utilisateur, cela vous empêche 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 ces 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 un ordinateur Manjaro vers le compte « dave » sur un ordinateur Fedora, via un scp commande émise depuis notre ordinateur Ubuntu local, la syntaxe est :

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

Copier des fichiers d'un serveur distant à un autre.

Nous revenons silencieusement à la ligne de commande. Rien n’indique que quelque chose s’est passé. Partant du principe qu’aucune nouvelle n’est une bonne nouvelle, scp signale uniquement les erreurs pour cette copie distante à distante. En vérifiant l’ordinateur Fedora, nous pouvons voir que les fichiers de l’ordinateur Manjaro ont été copiés et reçus.

Fichiers de l'ordinateur Manjaro reçus sur l'ordinateur Fedora

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

Avec cette option, les fichiers sont transférés de la cible vers la source, via votre ordinateur local. Pour que cela se produise, il doit y avoir un accès SSH transparent de votre ordinateur local à l’ordinateur cible.

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

Copier des fichiers d'un serveur distant à un autre, via l'ordinateur local

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

Autres options

La -p (préserver les attributs de fichier) conservera les indicateurs de création, de propriété et d’accès du fichier d’origine sur les fichiers transféré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épéter la commande et utilisez le -v (verbeux) pour afficher des informations détaillées sur la tentative de transfert. Vous devriez être en mesure de repérer le point de défaillance dans la sortie.

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

De nos jours, le temps nécessaire pour compresser et décompresser les fichiers est susceptible de prendre plus de temps que la différence entre les transmissions compressées et non compressées. Mais parce que scp est mieux utilisé pour copier des fichiers entre ordinateurs sur le même réseau local, la vitesse de transmission ne devrait pas être un problème.