Comment transférer des fichiers vers un système distant à l’aide de la commande scp [Linux]

SCP signifie “Copie sécurisée”. scpest un utilitaire en ligne de commande offert 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, scpcela 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 l’utilisation scpdevient possible.

Vous pouvez compter sur la scpcommande pour la confidentialité et l’intégrité car le fichier qui est transféré 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 la scpcommande. Nous examinerons également certaines des options fréquemment utilisées avec la scpcommande.

Premiers pas avec la commande scp

En utilisant la scpcommande, 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] [source_file_name] [user@destination_Host]:destination_folder

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

  • [source_file_name] Il s’agit du fichier source que vous souhaitez copier.
  • [ user@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_destination] Il s’agit du répertoire dans lequel vous souhaitez enregistrer le fichier copié.

Remarque : Le symbole deux-points ( :) est utilisé dans la syntaxe car il différencie les emplacements locaux et distants. Nous utilisons les deux-points ( :) 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 copiés dans le répertoire personnel de l’utilisateur du système distant.


Options utilisées avecscp

Certaines des options les plus populaires utilisées avec la scpcommande sont répertoriées ci-dessous.

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

Options fréquemment utilisées avec la commande scp

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


Copier un fichier d’un système local vers un système distant

scpvous 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 [file_name] remote_user@host:[destination_folder]

Exemple:

scp apache-tomcat-9.0.8.tar.gz root@143.110.178.221: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’.

READ  30 commandes Linux de base pour les débutants

Production:

gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz root@143.110.178.221:gaurav
root@143.110.178.221's password: 
apache-tomcat-9.0.8.tar.gz                           100% 9589KB  79.8KB/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 à l’aide de la scpcommande.


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 à l’aide de la scpcommande. 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 [file 1] [file 2] [file n] remote_username@remote_host:[specific directory]

Comprenons ce processus simple avec un exemple.

Exemple:

scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb root@143.110.178.221:gaurav

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

Production:

gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb root@143.110.178.221:gaurav 
root@143.110.178.221's password: 
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 root root 9818695 Oct  5 08:35 apache-tomcat-9.0.8.tar.gz
-rw-r--r-- 1 root root  204057 Oct  5 08:58 ath.html
-rw-r--r-- 1 root root    4360 Oct  5 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.


Copier un répertoire sur le système distant

Vous pouvez utiliser scpla commande 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 l’ -roption avec la scpcommande.

L’ -roption est utilisée pour copier un répertoire de manière récursive. Cela signifie que tous les sous-dossiers et fichiers du répertoire seront également copiés.

Syntaxe générale :

scp -r [directory path] remote_username@remote_host:[target_directory]

Exemple:

scp -r PycharmProjects root@143.110.178.221:gaurav

Production:

gaurav@ubuntu:~$ scp -r PycharmProjects root@143.110.178.221:gaurav
root@143.110.178.221's password: 
__main__.py                                   100%  623     7.8KB/s   00:00    
__init__.py                                   100%   23     0.4KB/s   00:00    
completion.py                                 100% 2929    28.1KB/s   00:00    
search.py                                     100% 4728    38.7KB/s   00:00    
uninstall.py                                  100% 2963    32.5KB/s   00:00    
hash.py                                       100% 1681    21.3KB/s   00:00    
check.py                                      100% 1430    16.8KB/s   00:00    
configuration.py                              100% 7125    50.4KB/s   00:00    
show.py                                       100% 6289    49.8KB/s   00:00    
download.py                                   100% 6623    48.2KB/s   00:00  
gaurav@ubuntu:~$  

L’utilisation de l’ -roption avec la scpcommande 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 l’ option -v(minuscule v) pour afficher les informations sur les fichiers qui sont copiés sur un système distant ou local. Ce type de sortie est également appelé sortie détaillée.

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 [file_name] user_name@user_host:<folder>

Exemple:

scp -v apache-tomcat-9.0.8.tar.gz root@159.89.170.11:team

Production:

gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz root@159.89.170.11:team
Executing: program /usr/bin/ssh host 159.89.170.11, user root, command scp -v -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/gaurav/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 159.89.170.11 [159.89.170.11] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /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
Transferred: sent 9826736, received 4016 bytes, in 97.2 seconds
Bytes per second: sent 101133.9, received 41.3
debug1: Exit status 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 la scpcommande est utilisée avec l’ -voption.

READ  Comprendre la commande grep sous Linux avec des exemples pratiques

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 à l’aide de la scpcommande.

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 elle 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 à transférer entre les deux machines distantes.

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

Exemple:

scp -r root@68.183.82.183:gaurav root@159.89.170.11:/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 ‘team’ sur le système distant.

Production:

gaurav@ubuntu:~$ scp -r root@68.183.82.183:/gaurav root@159.89.170.11:/team 
root@68.183.82.183's password: 
1.py                                          100%  134   261.3KB/s   00:00    
variables.py                                  100%  377   949.2KB/s   00:00    
abc.txt                                       100%    0     0.0KB/s   00:00    
ath.html                                      100%  199KB  41.8MB/s   00:00    
gaurav@ubuntu:~$

Ici, nous avons utilisé la scpcommande 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 répertoires du système distant vers votre système local à l’aide de la scpcommande. En termes plus simples, vous pouvez télécharger plusieurs fichiers ou répertoires du serveur distant sur votre système local à l’aide de la scpcommande.

Syntaxe générale :

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

Production:

gaurav@ubuntu:~$ scp root@159.89.170.11:how.txt .
root@159.89.170.11's password: 
how.txt                                                                                                             100%   11     0.1KB/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 Oct  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 à partir du serveur distant à l’aide de la scpcommande avec les options appropriées.


Compresser les fichiers pour effectuer des transferts plus rapides

Parfois, le transfert de fichiers volumineux peut prendre du temps. Ce problème peut être résolu lors de l’utilisation de la scpcommande avec l’ option -C(majuscule ).C

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

READ  Comment utiliser le terminal Linux dans Windows 10

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 [file_name] user_name@user_host:[target_folder]

Voyons un exemple comparatif pour comprendre la différence.

Transfert sans option -C :

gaurav@ubuntu:~$ scp -rv dlink root@68.183.82.183:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.

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
Transferred: sent 7516504, received 4008 bytes, in 74.6 seconds
Bytes per second: sent 100693.7, received 53.7
debug1: Exit status 0
gaurav@ubuntu:~$ 

D’après la sortie ci-dessus, nous pouvons voir que le temps nécessaire au 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.

Transférer avec l’option -C :

gaurav@ubuntu:~$ scp -Crv dlink root@68.183.82.183:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.
.
.
webupload.img                                                                                                       100% 1834KB  98.7KB/s   00:18    
Sending file modes: C0664 1877552 router.img
Sink: C0664 1877552 router.img
router.img                                                                                                          100% 1834KB 100.3KB/s   00:18    
Sink: E
Sending file modes: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip
Sink: 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
Transferred: sent 7518864, received 3828 bytes, in 51.0 seconds
Bytes per second: sent 100245.4, received 51.0
debug1: Exit status 0
debug1: compress outgoing: raw data 7511925, compressed 7513136, factor 1.00
debug1: compress incoming: raw data 1467, compressed 999, factor 0.68
gaurav@ubuntu:~$

Ici, nous pouvons facilement observer que l’utilisation de l’ -Coption avec la scpcommande nous a permis de compresser le fichier sur le réseau, ce qui s’est avéré être une option permettant de gagner du temps.


Utilisation d’un port ssh différent pour le transfert de fichiers

Lors de l’utilisation de la scpcommande, 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 l’ -Poption (P majuscule) avec la scpcommande pour utiliser le port de votre choix.

Syntaxe générale :

cp -P [new_port_number] [file_name/directory_name] remote_user@host:[destination_folder]

Exemple:

scp -P 4248 dlink root@68.183.82.183:team

En utilisant la commande ci-dessus, le fichier sera transféré sur le serveur distant. Mais cette fois, le port utilisé sera à la port 4248place du port par défaut port 22.


Conclusion

Après avoir parcouru ce didacticiel, nous avons appris la nature dynamique de la scpcommande 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 depuis le serveur distant. Ainsi, nous pouvons conclure que la scpcommande s’avère très utile pour les transferts de fichiers lorsque vous devez gérer simultanément plusieurs systèmes ainsi que des serveurs distants.

5/5 - (1 vote)
SAKHRI Mohamed
SAKHRI Mohamed

Le blog d'un passionné d'informatique qui partage des actualités, des tutoriels, des astuces, des outils en ligne et des logiciels pour Windows, macOS, Linux, Web designer et jeux vidéo.

Publications: 3732

Laisser un commentaire

Your email address will not be published.