Comment utiliser la commande SCP sous Linux

Un didacticiel simple pour vous aider à transférer des fichiers vers un système distant depuis votre système Linux à l'aide de la commande scp.

SCP signifie « copie sécurisée ». scp est un utilitaire en ligne de commande proposé par Linux qui permet le transfert de fichiers et de répertoires d'une machine à une autre sur un réseau non sécurisé.

Si vous souhaitez copier des fichiers d'un système à un autre, alors scp peut être une très bonne option pour effectuer un transfert sécurisé des fichiers et des répertoires. Lorsque les deux machines communicantes sont connectées sur le même réseau, alors en utilisant scp devient possible.

Vous pouvez compter fortement sur le scp commande de confidentialité et d'intégrité car le fichier en cours de transfert et le mot de passe utilisé pour le transfert sont tous deux cryptés. Aucune information sensible ne sera révélée même si quelqu'un essaie d'espionner le trafic pendant que ce transfert est en cours.

Dans ce tutoriel, nous verrons différents exemples de scp commander. Nous examinerons également certaines des options fréquemment utilisées avec le scp commander.

Prise en main de la commande scp

En utilisant le scp commande vous pouvez transférer des fichiers/répertoires :

  • De votre machine locale à une machine distante.
  • Entre deux machines distantes.
  • D'une machine distante à votre machine locale.

Syntaxe générale :

scp [Option] [nom_fichier_source] [utilisateur@hôte_destination]:dossier_destination

Comprenons les attributs de base de cette commande un par un.

  • [nom_fichier_source] Il s'agit du fichier source que vous souhaitez copier.
  • [utilisateur@destination_Host] Il s'agit du nom d'utilisateur du système distant sur lequel vous souhaitez copier le fichier. L'adresse IP de la machine distante est également utilisée dans cet attribut après le "@' symbole.
  • [dossier de destination] Il s'agit du répertoire dans lequel vous souhaitez enregistrer le fichier copié.

Noter: Le côlon (:) est utilisé dans la syntaxe car il fait la différence entre les emplacements locaux et distants. Nous utilisons le côlon (:) avec le système distant pour spécifier le répertoire dans lequel les fichiers doivent être copiés. Si nous ne spécifions pas le répertoire cible, les fichiers seront alors copiés dans le répertoire personnel de l'utilisateur du système distant.

Options utilisées avec scp

Certaines des options les plus populaires utilisées avec le scp commande sont répertoriés ci-dessous.

OptionLa description
-Cpermettre la compression du fichier à transférer
-vdonner la sortie verbeuse
-rcopier des fichiers et des répertoires de manière récursive
-ppréserver les autorisations, les modes et les temps d'accès des fichiers
-Pchanger le port par défaut utilisé par scp commander

Nous verrons les exemples de ces options, plus loin dans le tutoriel.

Copier le fichier du local vers un système distant

scp vous permet de transférer des fichiers de votre système local vers un système distant en utilisant la syntaxe suivante. Cela vous permet de transférer ou de télécharger vos fichiers sur un serveur placé à distance.

Syntaxe générale :

scp [nom_fichier] utilisateur_distant@hôte :[dossier_destination]

Exemple:

scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav

Dans cet exemple, nous copions un fichier « apache-tomcat-9.0.8.tar.gz » du système local vers le système distant dont l'adresse IP est « 143.110.178.221 ».

Sur le système distant, le fichier sera maintenant copié dans le répertoire nommé 'gaurav'.

Sortir:

gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected] mot de passe : apache-tomcat-9.0.8.tar.gz 100 % 9589 Ko 79,8 Ko /s 02:00 gaurav@ubuntu:~$ 

Vérifions la sortie sur le système distant pour le fichier.

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls apache-tomcat-9.0.8.tar.gz root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

Ainsi, le fichier est copié avec succès sur le système distant en utilisant le scp commander.

Copie de plusieurs fichiers sur un système distant

Dans l'exemple précédent, nous avons appris à transférer un fichier vers le système distant en utilisant le scp commander. Nous allons maintenant voir la méthode pour transférer plusieurs fichiers de votre système local vers un système distant à l'aide de cette commande.

Syntaxe générale :

scp [fichier 1] [fichier 2] [fichier n] remote_username@remote_host:[répertoire spécifique]

Laissez-nous comprendre ce processus simple avec un exemple.

Exemple:

scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav

Ici, plusieurs fichiers sont mentionnés dans la commande à copier sur le système distant.

Sortir:

gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected] mot de passe de : ath.html 100% 199KB 94.7KB/s 00 : 02 abc.txt 100% 0 0.0KB/s 00:00 ppa-purge_0.2.8+bzr56_all.deb 100% 4360 42.2KB/s 00:00 gaurav@ubuntu:~$

Sur le système distant :

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l total 9800 -rw-r--r-- 1 root root 0 oct 5 08:58 abc.txt -rw-r-- r-- 1 racine racine 9818695 5 octobre 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 racine racine 204057 5 octobre 08:58 ath.html -rw-r-- r-- 1 racine racine 4360 5 octobre 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

Les trois fichiers sont maintenant copiés sur le système distant.

Copie d'un répertoire sur le système distant

Vous pouvez utiliser scp pour copier un répertoire de votre système local vers le système distant. Le processus est similaire à celui de la copie d'un fichier. Pour copier également le contenu du répertoire, vous pouvez utiliser le -r option avec le scp commander.

le -r L'option est utilisée pour copier un répertoire de manière récursive. Cela signifie que tous les sous-dossiers et fichiers à l'intérieur du répertoire seront également copiés.

Syntaxe générale :

scp -r [chemin du répertoire] remote_username@remote_host:[target_directory]

Exemple:

scp -r PycharmProjects [email protected]:gaurav

Sortir:

gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected]'s password: __main__.py 100% 623 7.8KB/s 00:00 __init__.py 100% 23 0.4KB/s 00 :00 complétion.py 100 % 2929 28,1 Ko/s 00:00 search.py ​​100 % 4728 38,7 Ko/s 00:00 uninstall.py 100 % 2963 32,5 Ko/s 00:00 hash.py 100 % 1681 21,3 Ko/ s 00:00 check.py 100 % 1430 16,8 Ko/s 00:00 configuration.py 100 % 7125 50,4 Ko/s 00:00 show.py 100 % 6289 49,8 Ko/s 00:00 download.py 100 % 6623 48,2 Ko/s 00:00 gaurav@ubuntu:~$ 

En utilisant le -r option avec le scp La commande copie tous les sous-dossiers et fichiers du répertoire de la machine locale vers le système distant.

Affichage d'informations détaillées sur le processus scp

Vous pouvez utiliser le -v (minuscule v) pour afficher les informations sur les fichiers en cours de copie sur un système distant ou local. Ce type de sortie est également appelé sortie verbeuse.

Lorsque cette option est utilisée, les informations de débogage complètes sur le fichier sont affichées à l'écran.

Syntaxe générale :

scp -v [nom_fichier] nom_utilisateur@hôte_utilisateur :

Exemple:

scp -v apache-tomcat-9.0.8.tar.gz [email protected]:équipe

Sortir:

gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Exécution : programme /usr/bin/ssh hôte 159.89.170.11, utilisateur root, commande scp -v -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 décembre 2017 debug1 : Lecture des données de configuration /home/gaurav/.ssh/config debug1 : Lecture des données de configuration /etc/ssh/ssh_config debug1 : /etc/ssh/ssh_config ligne 19 : application des options pour * debug1 : connexion au port 22 de 159.89.170.11 [159.89.170.11] debug1 : connexion établie. debug1 : key_load_public : aucun fichier ou répertoire de ce type debug1 : fichier d'identité /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug1 : client_input_channel_req : channel 0 rtype exit-status reply 0 debug1 : channel 0 : free : client-session, nchannels 1 debug1 : fd 0 clearing O_NONBLOCK debug1 : fd 1 clearing O_NONBLOCK Transféré : envoyé 9826736, reçu 4016 octets, en 97,2 secondes Octets par seconde : envoyé 101133.9, reçu 41.3 debug1 : état de sortie 0 gaurav@ubuntu :~$ 

Ici, dans la sortie, vous pouvez voir que les informations de débogage du fichier sont affichées sur votre terminal lorsque le scp la commande est utilisée avec le -v option.

Transfert de fichiers entre deux hôtes distants

Linux vous permet de vous connecter à plusieurs hôtes distants. Vous pouvez transférer des fichiers et des répertoires entre deux hôtes distants en utilisant le scp commander.

Syntaxe générale :

scp remote_user_1@host_1:/[file_name] remote_user_2@host_2:[folder_to_save]

La syntaxe peut sembler un peu plus large mais est assez simple. Ici, la première partie de la commande donne l'entrée sur l'utilisateur distant à partir duquel le fichier doit être copié. deux points (:) et / permet de spécifier le nom du fichier ou le nom du répertoire qui doit être transféré entre les deux machines distantes.

La deuxième partie donne des informations sur le système distant cible sur lequel le fichier doit être copié.

Exemple:

scp -r [email protected]:gaurav [email protected]:/team

Ici, nous allons copier un répertoire nommé « gaurav » de manière récursive du système local vers un système distant. Le fichier sera copié dans un dossier « équipe » sur le système distant.

Sortir:

gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected]'s password: 1.py 100% 134 261.3KB/s 00:00 variables.py 100 % 377 949,2 Ko/s 00:00 abc.txt 100 % 0 0,0 Ko/s 00:00 ath.html 100 % 199 Ko 41,8 Mo/s 00:00 gaurav@ubuntu:~$

Ici, nous avons utilisé le scp sur le système local pour transférer un répertoire nommé 'gaurav' d'un serveur distant à un autre.

Transférer des fichiers du système distant vers votre système local

Vous pouvez facilement transférer les fichiers ou les répertoires du système distant vers votre système local en utilisant le scp commander. En termes plus simples, vous pouvez télécharger plusieurs fichiers ou répertoires du serveur distant sur votre système local en utilisant le scp commander.

Syntaxe générale :

scp remote_username@user_host:/files/file.txt /[folder_of_local_system]

Sortir:

gaurav@ubuntu:~$ scp [email protected]:how.txt . mot de passe de [email protected] : how.txt 100% 11 0,1 Ko/s 00:00 gaurav@ubuntu:~$

Ici, j'ai téléchargé (copié) le fichier du serveur distant sur mon répertoire personnel. Par conséquent, j'ai utilisé le point (.) pour spécifier dans la commande de copier le fichier dans mon répertoire personnel.

Exemple de sortie :

gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 octobre 6 09:49 how.txt gaurav@ubuntu:~$ 

Ici, le fichier est maintenant copié dans mon répertoire personnel à partir du serveur distant.

De la même manière, vous pouvez télécharger plusieurs fichiers ou répertoires depuis le serveur distant en utilisant le scp commande avec les options appropriées.

Compresser des fichiers pour accélérer les transferts

Parfois, le transfert de fichiers volumineux peut prendre du temps. Ce problème peut être résolu en utilisant le scp commande avec le -C (majuscule C) option.

En utilisant le -C option, compresse les fichiers de plus grande taille, ce qui facilite un transfert plus rapide et permet ainsi de gagner du temps.

Un fait intéressant à propos de cette option est que le fichier est copié avec sa taille d'origine sur le système de destination, mais pendant le processus de transfert, la taille est compressée pour permettre un transfert plus rapide. Ainsi, la compression se fait uniquement sur le réseau.

Syntaxe générale :

scp -C [nom_fichier] nom_utilisateur@hôte_utilisateur :[dossier_cible]

Voyons un exemple comparatif pour comprendre la différence.

Transfert sans option -C :

gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Exécution : programme /usr/bin/ssh hôte 68.183.82.183, utilisateur root, commande scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 décembre 2017 debug1 : Lecture des données de configuration /home/trinity/.ssh/config debug1 : Lecture des données de configuration /etc/ssh/ssh_config debug1 : /etc/ssh/ssh_config ligne 19 : Application des options pour * debug1 : connexion au port 22 68.183.82.183 [68.183.82.183] debug1 : connexion établie. debug1 : client_input_channel_req : canal 0 rtype exit-status reply 0 debug1 : canal 0 : libre : client-session, nchannels 1 debug1 : fd 0 clearing O_NONBLOCK debug1 : fd 1 clearing O_NONBLOCK Transféré : envoyé 7516504, reçu 4008 octets, en 74,6 secondes octets par seconde : envoyé 100693,7, reçu 53,7 debug1 : état de sortie 0 gaurav@ubuntu :~$ 

D'après la sortie ci-dessus, nous pouvons voir que le temps requis pour le transfert est de 74,6 secondes. Nous allons essayer de transférer le même fichier en utilisant l'option -C et observer la différence.

Transfert avec l'option -C :

gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Exécution : programme /usr/bin/ssh hôte 68.183.82.183, utilisateur root, commande scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 décembre 2017 debug1 : Lecture des données de configuration /home/trinity/.ssh/config debug1 : Lecture des données de configuration /etc/ssh/ssh_config debug1 : /etc/ssh/ssh_config ligne 19 : Application des options pour * debug1 : connexion au port 22 68.183.82.183 [68.183.82.183] debug1 : connexion établie. . . webupload.img 100 % 1834 Ko 98,7 Ko/s 00:18 Modes d'envoi de fichiers : C0664 1877552 router.img Récepteur : C0664 1877552 router.img router.img 100 % 1834 Ko 100,3 Ko/s 00:18 Récepteur : E Modes d'envoi de fichiers : C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Évier : C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T-01.00.07.zip 100% 3666KB 218.5KB/s 00:16 Sink : E debug1 : client_input_channel_req : channel 0 rtype exit-status reply 0 debug1 : channel 0 : free : client-session, nchannels 1 debug1 : fd 0 clearing O_NONBLOCK debug1 : fd 1 clearing O_NONBLOCK Transféré : envoyé 7518864, reçu 3828 octets, en 51,0 secondes Octets par seconde : envoyé 100245.4, reçu 51,0 debug1 : état de sortie 0 debug1 : compresser sortant : données brutes 7511925, compressé 7513136, facteur 1,00 debug1 : compresser entrant : données brutes 1467, compressées 999, facteur 0,68 gaurav@ubuntu:~$

Ici, nous pouvons facilement observer qu'en utilisant le -C option avec le scp La commande nous a permis de compresser le fichier sur le réseau, s'avérant ainsi une option permettant de gagner du temps.

Utiliser un autre port ssh pour le transfert de fichiers

Lors de l'utilisation du scp commande le port par défaut qui est déployé est le port 22. L'utilisateur a la liberté de personnaliser ce choix de port. Vous pouvez utiliser le -P (option P majuscule) avec le scp commande pour utiliser le port de votre choix.

Syntaxe générale :

cp -P [nouveau_numéro_port] [nom_fichier/nom_répertoire] utilisateur_distant@hôte:[dossier_destination]

Exemple:

scp -P 4248 dlink [email protected]:équipe

En utilisant la commande ci-dessus, le fichier sera transféré vers le serveur distant. Mais cette fois, le port utilisé sera port 4248 au lieu de la valeur par défaut port 22.

Conclusion

Après avoir parcouru ce didacticiel, nous avons appris la nature dynamique du scp commande utilisée pour transférer ou copier des fichiers d'un système à un autre. Cette option peut également être utilisée pour télécharger des fichiers ou des répertoires à partir du serveur distant. Ainsi, nous pouvons conclure que scp La commande s'avère très utile pour les transferts de fichiers lorsque vous devez gérer plusieurs systèmes ainsi que des serveurs distants simultanément.