Vous connaissez probablement déjà la commande cp sous Linux qui est utilisée pour copier des fichiers sous Linux. La commande cp ne peut être utilisée que sur la machine locale.
Mais qu'en est-il de la copie de fichiers depuis un système Linux distant ? Pour copier des fichiers depuis un serveur distant ou vers un serveur distant, vous pouvez utiliser une commande appelée scp.
Curiosité :scp est l'abréviation de Copie sécurisée.
syntaxe de la commande scp
La syntaxe et l'utilisation de la commande scp sont similaires à la commande cp et vous le verrez sous peu dans ces exemples de commande scp.
Mais examinons d'abord la syntaxe de la commande scp :
scp <options> source_path destination_path
Selon l'origine du fichier à copier, la source peut être client ou serveur. Si la source est le client, la destination est le serveur et vice-versa.
Mais cela semble trop simple, n'est-ce pas ? L'objectif principal de la commande scp est n d'utiliser le format correct pour le format du chemin source ou de destination.
Un chemin typique vers un fichier ou un répertoire sur le serveur est représenté dans ce format :
<username>@<ip_address_of_system>:<path_to_the file/directory>
En fait, vous pouvez également utiliser [email protected] dans la commande scp mais il est plus probable que vous vous retrouviez avec une erreur "Impossible de résoudre le nom d'hôte ".
En effet, la corrélation du nom d'hôte avec l'adresse IP dépend de la configuration réseau du réseau du serveur. L'utilisation de l'adresse IP réelle vous évite les ennuis.
Éléments à garder à l'esprit avant d'utiliser la commande scp
Voici quelques éléments dont vous avez besoin avant de pouvoir utiliser la commande scp sur votre système Linux :
- Assurez-vous que ssh est installé et en cours d'exécution sur les ordinateurs client et serveur, car la commande scp utilise ssh en interne. Si ssh n'est pas installé, installez-le en utilisant la commande "sudo apt install ssh" sur des machines basées sur Debian ou en utilisant les gestionnaires de paquets respectifs de votre distribution.
- Vous devez connaître le nom d'utilisateur et le mot de passe du système distant. Vous serez invité à entrer le mot de passe de l'hôte distant. Votre transfert de fichiers commencera seulement lorsque vous entrez le mot de passe correct de l'hôte distant.
Utilisation de la commande scp sous Linux :10 exemples pratiques
Maintenant que nous avons vu la syntaxe de la commande scp et le format pour spécifier le chemin vers le serveur, voyons maintenant comment utiliser la commande scp.
1. Copier un fichier sur le système distant à l'aide de la commande scp
Pour copier un seul fichier d'une machine locale vers un hôte distant, spécifiez le chemin d'accès au fichier en tant que chemin source et chemin dans l'hôte distant où le fichier doit être copié.
scp abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
2. Copier un fichier depuis le système distant à l'aide de la commande scp
Copier un fichier d'un système distant vers le système local est à peu près le même. Il vous suffit de spécifier le chemin complet du fichier sur le système distant et le chemin sur le système local.
Donc, pour copier le fichier du système distant vers le répertoire actuel, utilisez simplement la commande de la manière suivante :
scp [email protected]<ip_address_of_xyz>:/remote/user/home/abc.txt .
3. Copier plusieurs fichiers à l'aide de la commande scp
Pour copier plusieurs fichiers de la machine locale vers l'hôte, spécifiez simplement le nom des fichiers comme chemin source.
scp abc.txt def.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
4. Copier un répertoire entier avec la commande scp
Copier un répertoire à l'aide de scp est également identique à la commande cp. Vous pouvez utiliser l'option -r et spécifier le nom du dossier comme chemin source. C'est ce qu'on appelle le mode récursif.
scp -r ~/Desktop/test [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
Vous pouvez également spécifier plusieurs répertoires et les copier tous en une seule commande.
5. Voir les détails du transfert de fichier dans la sortie
Si vous êtes curieux de savoir ce qui se passe dans les coulisses lors de la copie, vous pouvez utiliser l'option -v pour voir tous les processus exécutés, y compris le débogage, l'état de sortie, le chiffrement, le déchiffrement, etc. C'est ce qu'on appelle le mode verbeux.
scp -v abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
6. Copie de fichiers sur deux hôtes distants
Jusqu'à présent, vous avez vu comment copier d'une machine locale vers une machine distante.
Pour copier des fichiers d'un ordinateur distant vers un autre ordinateur distant, spécifiez les chemins de la source et de la destination au format de l'ordinateur distant comme indiqué ci-dessus.
scp [email protected]<ip_address_of_abc>:<path_of_file_or_folder> [email protected]<ip_address_of_xyz>:<path_of_file_or_folder
Inutile de dire que vous devez connaître le mot de passe des deux systèmes ici.
7. Copier des fichiers avec compression [réduit le temps de transfert]
Si vous essayez de copier un groupe de fichiers ensemble, cela prendra plus de temps que le transfert d'un seul fichier de taille équivalente à la somme de tous les fichiers individuels.
Si vous pensez que vous devez augmenter la vitesse de transfert des fichiers, vous pouvez compresser les fichiers en utilisant l'option -C et transférer les fichiers.
La meilleure chose est que la compression ne se produit que lors du transfert. Une fois le transfert terminé, les fichiers seront stockés dans leur forme d'origine. Vous ne verrez pas un fichier arhcive mais tous les fichiers individuels tels qu'ils étaient sur le serveur distant.
scp -C abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
8. Limitation de la bande passante du transfert de fichiers
Si vous pensez que le transfert de fichiers utilise la majeure partie de la bande passante, vous pouvez réduire la bande passante du transfert de fichiers en utilisant l'option -l suivie du nouveau taux de bande passante.
scp -l 800 abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
Notez que la bande passante que vous spécifiez dans la commande est en kilobits par seconde, mais lors du transfert des fichiers, la sortie de la commande scp affichera le taux de transfert en kilooctets par seconde.
Puisque 1 octet =8 bits, les 8 300 kilobits par seconde dans le paramètre de commande deviennent 100 kilooctets par seconde dans la sortie de la commande.
9. Préserver les attributs d'origine des fichiers copiés
Si vous devez conserver les attributs de fichier d'origine tels que les autorisations et la propriété du fichier, les horodatages de fichier, etc., utilisez l'option -p.
scp -p abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
10. Masquer la sortie de la commande scp
Si vous n'êtes pas à l'aise avec la longue sortie de la commande scp, vous pouvez éviter la sortie de la commande en utilisant l'option -q. C'est ce qu'on appelle le mode silencieux.
Il masque même la progression de la copie des fichiers.
scp -q abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
Dans les exemples ci-dessus, vous avez vu comment copier les fichiers sur l'hôte distant à partir de la machine locale. Si vous avez besoin de copier des fichiers de l'hôte distant vers la machine locale, écrivez le chemin du fichier/dossier à copier depuis l'hôte distant comme chemin source et le chemin où le fichier/dossier doit être collé dans la machine locale comme destination chemin.
Pour plus de détails sur la commande scp, veuillez consulter sa page de manuel.
J'espère que vous avez maintenant compris comment tirer le meilleur parti de la commande scp pour copier en toute sécurité des fichiers entre ordinateurs. Personnellement, je préfère utiliser la commande rsync plutôt que scp car rsync a plus de fonctionnalités.
Si vous rencontrez des problèmes, n'hésitez pas à poser des questions dans la section des commentaires ci-dessous. Et si vous connaissez une autre astuce de commande scp géniale, partagez-la avec le reste d'entre nous ici.