En tant qu'administrateur système Linux, il existe de nombreuses façons de transférer des fichiers , sécurisée ou non, entre deux hôtes différents.
Au cours de votre travail de jour, il peut vous être demandé d'effectuer de gros transferts entre deux serveurs distants.
Vous devrez peut-être sauvegarder une base de données entière sur un lecteur de partage sécurisé, ou vous pouvez simplement vouloir obtenir un fichier distant sur votre système.
Par conséquent, vous souhaitez transférer des fichiers , mais vous voulez le faire de manière très sûre et sécurisée.
Heureusement pour vous, il existe de nombreuses commandes différentes que vous pouvez utiliser pour y parvenir.
Dans ce tutoriel, nous allons voir toutes les différentes manières de transférer des fichiers entre hôtes sous Linux en utilisant ftp, sftp, scp ou rsync.
Prêt ?
Voici toutes les façons de transférer des fichiers sous Linux :
Transférer des fichiers sur Linux en utilisant ftp
La première façon de transférer des fichiers sous Linux est d'utiliser le ftp commande .
Par défaut, le protocole FTP utilise le protocole TCP qui est non sécurisé .
Cela signifie que si quelqu'un suivait les données ou les paquets envoyés sur le réseau, il serait en mesure de voir ce que vous envoyez aux hôtes distants.
Dans la plupart des cas, ce n'est pas quelque chose que vous souhaitez pour vos transferts de fichiers, surtout lorsqu'ils sont effectués sur Internet.
Cependant, nous allons toujours fournir la syntaxe de la commande ftp car il peut être utile de l'utiliser pour plus de simplicité sur les réseaux locaux.
Par défaut, votre distribution peut ne pas avoir la commande ftp installée par défaut.
Pour vérifier si ftp est installé sur votre hébergeur, vous pouvez lancer la commande suivante
$ command -v ftp
Si aucune sortie ne vous est fournie, cela signifie que le ftp n'est pas disponible sur votre système.
Installer ftp sur les distributions basées sur Debian
Pour l'installer sur Debian -, exécutez la commande suivante
Pour installer de nouveaux packages, vous devez disposer des privilèges sudo sur votre distribution Debian
$ sudo apt-get install ftp
Après l'installation, exécutez à nouveau la commande "commande" pour vous assurer qu'elle est correctement disponible sur votre système.
$ command -v ftp
/usr/bin/ftp
Installer ftp sur des distributions basées sur Red Hat
Pour installer ftp sur les distributions basées sur Red Hat, vous devez exécuter les commandes suivantes
Afin d'installer de nouveaux packages sur RHEL ou CentOS , vous devez disposer des privilèges sudo sur votre distribution CentOS.
$ sudo yum install ftp
Encore une fois, exécutez la commande "commande" afin de vérifier que vos packages ont été correctement installés
$ command -v ftp
/usr/bin/ftp
Se connecter à des hôtes distants avec ftp
Pour vous connecter à des hôtes distants à l'aide de la commande ftp, vous devez utiliser la syntaxe suivante
$ ftp <destination_ip>
Lors de la connexion, voici ce que vous devriez voir si vous vous connectez à un serveur FTP non protégé.
Tapez le nom d'utilisateur qui vous a été attribué pour vous connecter à ce serveur FTP.
Vous serez invité à entrer votre mot de passe. Si les informations d'identification sont correctes, vous devriez pouvoir vous connecter directement à votre serveur FTP.
Télécharger des fichiers sur Linux en utilisant ftp
Lorsque vous êtes connecté à votre serveur FTP, vous disposez de plusieurs façons d'interagir avec lui.
Tout d'abord, appuyez sur " ? ” afin de voir toutes les commandes à votre disposition.
Comme vous pouvez le voir, les commandes disponibles sont à peu près identiques à celles que vous trouveriez sur un système Linux standard.
Par défaut, sur votre serveur FTP, vous recevrez un accès shell FTP directement dans votre répertoire personnel.
Pour voir tous les fichiers disponibles dans le répertoire courant, exécutez la commande suivante
$ ls
Comme vous pouvez le voir ici, je liste les entrées de mon répertoire personnel.
Pour naviguer dans l'un des dossiers, appuyez sur la commande standard "cd" avec le chemin vers lequel vous souhaitez naviguer.
Pour télécharger un fichier depuis le répertoire courant, vous devez lancer la commande suivante
$ get <file>
Le local sera copié dans votre répertoire de travail actuel sur la machine locale, c'est-à-dire le chemin à partir duquel vous avez lancé la commande ftp en premier lieu.
En remarque, si vous souhaitez télécharger plusieurs fichiers à partir de vos hôtes distants, vous devez utiliser la commande "mget" avec la syntaxe suivante
$ mget <file1> <file2> ... <filen>
Toutes nos félicitations!
Vous avez réussi à transférer un fichier de votre ordinateur distant vers votre ordinateur local via FTP.
Télécharger des fichiers sur Linux en utilisant ftp
Avec FTP, vous pouvez télécharger des fichiers depuis vos hôtes distants, mais vous pouvez également télécharger des fichiers vers vos hôtes distants.
Pour télécharger des fichiers via ftp, vous devez utiliser la commande "put" avec la syntaxe suivante
$ put <file>
Votre fichier devrait maintenant être accessible sur votre hôte distant, dans le répertoire personnel de l'utilisateur que vous utilisez pour transférer vos fichiers.
$ ls /home/<user>
file.txt
De même, si vous souhaitez télécharger plusieurs fichiers sur vos hôtes distants, vous pouvez utiliser "mput" de cette façon
$ mput <file1> <file2> ... <filen>
Félicitations !
Vous avez réussi à transférer des fichiers de votre hôte local vers votre hôte distant à l'aide de ftp.
Transférer des fichiers à l'aide de sftp sous Linux
Un moyen plus sûr de transférer des fichiers entre deux hôtes consiste à utiliser la commande sftp.
La commande sftp, qui signifie "Secure File Transfer Protocol “, est un moyen de transférer des fichiers entre deux hôtes avec un trafic crypté.
Par conséquent, même si quelqu'un intercepte le trafic entre vous et l'hôte distant, il ne pourra pas le déchiffrer sans avoir accès à vos clés SSH.
Lorsque vous utilisez la commande sftp, l'hôte sur lequel vous essayez de télécharger ou de télécharger des fichiers doit être équipé d'un serveur SSH.
Si vous utilisez un serveur OpenSSH sur votre hébergeur distant, vous pourrez vous y connecter afin d'effectuer des transferts de fichiers.
Par défaut, sftp devrait être disponible sur votre système, mais vous pouvez le vérifier en exécutant la commande suivante.
$ command -v sftp
/usr/bin/sftp
Se connecter à des hôtes distants à l'aide de sftp
Pour vous connecter à des hôtes distants à l'aide de sftp, vous devez utiliser la syntaxe suivante
$ sftp <destination_ip>
Par défaut, si c'est la première fois que vous vous connectez à un hôte distant, il vous sera demandé d'ajouter l'hôte à la liste des hôtes de confiance de votre système (situé à /home/user/.ssh/known_hosts par défaut)
Maintenant que vous êtes connecté sur votre serveur SSH distant, la syntaxe pour naviguer ou transférer des fichiers est la même que la commande ftp standard.
Télécharger des fichiers sur Linux en utilisant sftp
Tout d'abord, vous pouvez appuyer sur "?" afin de voir toutes les commandes disponibles sur le serveur SSH.
Tout d'abord, appuyez sur la commande "ls" pour voir tous les fichiers et dossiers disponibles sur le système distant.
$ ls
Comme vous pouvez le voir, cette commande répertoriera l'intégralité du dossier dans lequel je suis actuellement assis (qui est le répertoire personnel dans ce cas).
Pour naviguer vers un dossier, appuyez sur la commande "cd" qui ferait normalement sur un serveur FTP standard.
$ cd <path>
Pour télécharger un fichier sur un serveur SFTP, utilisez la commande "get" en utilisant cette syntaxe
$ get <file>
Le fichier sera copié du répertoire distant actuel vers le répertoire local sur lequel vous avez lancé la commande sftp.
Toutes nos félicitations! Vous avez correctement transféré les fichiers de votre hôte distant vers votre ordinateur local.
Télécharger des fichiers sur Linux en utilisant sftp
Alternativement, vous pouvez transférer des fichiers entre votre machine locale vers votre hôte distant.
Pour transférer des fichiers à l'aide de sftp, vous devez utiliser la commande "put".
$ put <file>
Si vous listez les entrées de votre répertoire distant, vous devriez pouvoir voir votre fichier.
$ sftp> ls -l
Félicitations !
Vous avez réussi à transférer des fichiers de votre hôte local vers votre ordinateur distant.
Transfert de fichiers sur Linux à l'aide de scp
L'un des autres moyens de transférer des fichiers entre deux hôtes sous Linux consiste à utiliser la commande scp.
$ scp <option> <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
La commande scp établit une connexion sécurisée entre les deux hôtes et utilise le port SSH standard pour transférer des fichiers.
Par conséquent, vous devrez disposer d'un serveur SSH sur votre hôte de destination pour que le fichier soit transféré.
Par exemple, pour transférer un fichier local de votre machine actuelle vers un hôte distant, vous exécuterez la commande suivante
$ scp file [email protected]:file
Par défaut, si vous ne spécifiez pas de chemin absolu, les fichiers seront copiés directement dans le répertoire personnel de l'utilisateur avec lequel vous vous connectez.
Maintenant, si je vérifie les fichiers sur mon hôte distant, le fichier doit se trouver dans le répertoire de base de l'utilisateur.
Transférer des répertoires sous Linux à l'aide de scp
Avec la commande scp, il est également possible de transférer des répertoires entiers vers l'hôte de destination.
Pour copier des répertoires, vous devez spécifier l'option "-r".
Prenons l'exemple d'un dossier nommé "répertoire" contenant 3 fichiers. Pour les copier, vous devez utiliser la commande suivante
$ scp -r directory [email protected]:.
Si vous inspectez les répertoires sur votre hôte de destination, vous devriez pouvoir voir votre répertoire transféré.
Notez que si vous spécifiez un répertoire personnalisé sur la cible, il sera créé s'il n'existe pas par défaut.
Transférer des fichiers entre deux hôtes distants
Dans l'exemple précédent, nous avons utilisé un hôte local avec un hôte distant que nous avons contacté à l'aide de son adresse IP.
Maintenant, vous devrez peut-être transférer des fichiers entre deux hôtes distants situés à deux adresses IP différentes.
Afin de transférer des fichiers entre ces deux hôtes, vous allez exécuter la commande suivante
$ scp <option> <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
Par exemple, cela conduirait à
$ scp [email protected]:file [email protected]:file
Notez que dans ce cas, vous allez avoir besoin de deux serveurs SSH sur les deux instances, sinon cela ne fonctionnera pas.
Utiliser scp avec une barre de progression
Afin d'afficher les statistiques du processus scp, vous devez spécifier l'option "-v" (qui signifie verbeux)
$ scp -v <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
Transfert de fichiers sur Linux à l'aide de rsync
Enfin, la dernière façon de transférer des fichiers entre deux hôtes sous Linux consiste à utiliser la commande rsync.
La commande rsync utilise également un protocole sécurisé car elle s'appuie sur le protocole SSH pour le transfert de données. Il peut être utilisé de différentes manières, mais nous allons nous concentrer sur les transferts de fichiers pour ce didacticiel.
Les commandes scp et rsync sont très similaires mais rsync offre bien plus de fonctionnalités pour les transferts de fichiers. Vous pouvez choisir par exemple d'inclure certains fichiers tout en en excluant d'autres. Vous pouvez également choisir de conserver les autorisations ou les liens physiques lors d'une copie.
Dans l'ensemble, rsync est un surensemble de la commande scp.
Par défaut, la commande rsync n'est peut-être pas installée sur votre système. Pour l'installer, suivez ces instructions.
Installer rsync sur les distributions basées sur Debian
Pour installer rsync, vous allez être un utilisateur sudo sur votre hôte.
Pour installer rsync, exécutez la commande suivante
$ sudo apt-get install rsync
Enfin, exécutez la commande afin de vous assurer qu'elle a été correctement installée.
$ rsync --help
Installation de rsync sur les distributions basées sur Red Hat
Pour installer rsync sur RHEL ou sur CentOS, exécutez la commande suivante
$ sudo yum install rsync
De même, exécutez l'option d'aide afin de vous assurer qu'elle a été correctement installée.
$ rsync --help
Utiliser rsync pour transférer des fichiers sous Linux
Maintenant que rsync est correctement installé sur votre hébergeur, vous pouvez l'utiliser de la manière suivante
$ rsync <option> <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
Par exemple, pour transférer des fichiers d'un hôte local vers une machine distante, vous exécuterez la commande suivante
$ rsync file [email protected]:file
De même, pour copier des fichiers de votre hôte distant vers votre ordinateur local, vous exécuteriez
$ rsync [email protected]:file file
Utiliser rsync pour transférer des répertoires sous Linux
Avec rsync, vous pouvez également transférer des répertoires complets d'un hôte local vers un hôte distant.
Il vous suffit d'ajouter l'option "-r" à votre syntaxe actuelle
$ rsync -r <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
Lors de la copie de répertoires, il existe une règle que vous devez connaître.
Lors de la spécification du répertoire source, vous avez la possibilité d'ajouter une barre oblique à la fin afin de copier le contenu du répertoire et non le répertoire lui-même.
Pour illustrer cela, disons que vous avez un répertoire nommé "répertoire", que vous souhaitez transférer vers un répertoire distant nommé "répertoire" sur votre machine distante.
En utilisant une syntaxe de fin, voici ce que vous obtiendriez sur votre hôte distant
$ rsync directory/ [email protected]:directory
Sur l'hôte distant
/home/user/
├── directory
├── file1
├── file2
├── file3
Cependant, si vous écrivez rsync sans barre oblique finale, c'est-à-dire
$ rsync directory [email protected]:directory
Sur l'hôte distant
/home/user/
├── directory
├── directory
├── file1
├── file2
├── file3
Par conséquent, vous souhaiterez peut-être inclure des barres obliques finales par défaut lors de la copie de fichiers d'un hôte à un autre afin d'éviter les noms de répertoire en double.
Utiliser rsync avec barre de progression
Une façon très pratique d'utiliser rsync est d'avoir une barre de progression associée pour les longs transferts.
Pour avoir une barre de progression lors de l'utilisation de rsync, vous devez utiliser l'option "-progress" (pour lisible par l'homme)
$ rsync --progress <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
Conclusion
Dans ce didacticiel, vous avez appris comment transférer facilement des fichiers sous Linux à l'aide de la commande ftp, des commandes sftp, scp ou rsync.
Vous avez vu les différences entre ces commandes et comment elles peuvent être utilisées pour transférer des répertoires complets.