Tous les produits
Search
Centre de documentation

Elastic Compute Service:Transférer des fichiers vers une instance Linux avec scp, sftp ou rsync

Dernière mise à jour :Aug 18, 2026

Choisissez scp, sftp ou rsync pour transférer des fichiers entre un système local Linux ou macOS et une instance ECS Linux via SSH.

Choisir un outil de transfert

Sélectionnez l'outil le mieux adapté à votre scénario.

  • scp : Transferts rapides de fichiers uniques. Syntaxe simple.

  • sftp : Session interactive similaire au FTP permettant de parcourir, supprimer et renommer des fichiers.

  • rsync : Synchronisation de répertoires, sauvegardes ou gestion de nombreux petits fichiers. L'algorithme incrémentiel ne transfère que les différences.

  • Réseaux instables : Utilisez la reprise de transfert avec rsync ou sftp pour les fichiers volumineux.

Comparaison technique détaillée :

Comparaison détaillée de scp, sftp et rsync

Fonctionnalité

scp

sftp

rsync

Performances

Fichiers volumineux : Bonnes performances.

Grand nombre de petits fichiers : Peu efficace, car chaque fichier peut entraîner une surcharge liée à l'établissement d'une nouvelle connexion.

Fichiers volumineux : Bonnes performances et prise en charge du pipelining.

Grand nombre de petits fichiers : Meilleur que scp, mais moins efficace que rsync.

Efficacité globale élevée. Pour les synchronisations ultérieures, seules les différences entre les fichiers sont transférées, ce qui économise de la bande passante et du temps.

Reprise de transfert

Non pris en charge. Les transferts interrompus doivent reprendre depuis le début.

Reprend les transferts de fichiers uniques avec les commandes reget (téléchargement) et reput (envoi).

Pris en charge. Les options --partial ou --append-verify permettent de reprendre les transferts pour les fichiers et les répertoires.

Avantage principal

Syntaxe simple. Inclus par défaut dans la plupart des systèmes, idéal pour les transferts de fichiers ponctuels et rapides.

Propose une session interactive pour gérer les fichiers sur le serveur distant à l'aide de commandes telles que ls, rm et mkdir.

Synchronisation incrémentielle. Prend en charge des options avancées telles que le filtrage, la suppression, la limitation de vitesse et la compression.

Consommation de ressources

Faible consommation de CPU et de mémoire.

Une session interactive maintient une connexion SSH persistante, entraînant une consommation de ressources moyenne.

Consomme une certaine quantité de CPU et de mémoire lors de la comparaison des différences entre fichiers, en particulier lors de l'analyse d'un grand nombre de fichiers.

Procédure

Avant de commencer

Effectuez ces vérifications avant de transférer des fichiers.

  1. Récupérez l'adresse IP publique de l'instance

    L'instance doit avoir la bande passante publique activée. Notez l'adresse IP publique depuis la page Instance list de la console ECS.

  2. Configurez les règles du groupe de sécurité

    Ces outils utilisent SSH (port 22 par défaut). Assurez-vous que le groupe de sécurité autorise le trafic TCP entrant sur ce port depuis votre adresse IP locale.

    • Action : Allow

    • Protocol Type : Custom TCP

    • Port Range : 22/22 (ou votre port SSH personnalisé)

    • Source : Définissez-la sur votre adresse IP publique locale pour des raisons de sécurité.

      Obtenez votre adresse IP en exécutant curl ifconfig.me ou curl ip.sb dans votre terminal local.
  3. Vérifiez le pare-feu interne

    Le pare-feu du système d'exploitation (tel que firewalld ou ufw) peut également bloquer la connexion.

    1. Connectez-vous à l'instance et vérifiez l'état du pare-feu.

    2. Si le pare-feu est actif, assurez-vous qu'il autorise SSH ou le port 22. Pour ouvrir un port ou un service, consultez la documentation de votre système d'exploitation.

Utiliser scp pour transférer des fichiers

Le protocole Secure Copy (scp) copie des fichiers et des répertoires entre un ordinateur local et un hôte distant.

Envoyer des fichiers ou des répertoires vers une instance

Envoyez un fichier ou un dossier vers votre instance. Un mot de passe vous sera demandé.

# Upload a single file to the instance
sudo scp <local_file_path> <instance_username>@<public_ip_address>:<remote_directory_path>

# Upload a local directory to the instance
sudo scp -r <local_directory_path> <instance_username>@<public_ip_address>:<remote_directory_path>

Exemple :

Envoyez /opt/test.txt vers /home/ecs-user/ sur une instance dont l'IP publique est 1xx.xxx.xxx.121 :

sudo scp /opt/test.txt ecs-user@1xx.xxx.xxx.121:/home/ecs-user/

Télécharger des fichiers ou des répertoires depuis une instance

Téléchargez un fichier depuis votre instance. Un mot de passe vous sera demandé.

Note : scp est inefficace pour de nombreux petits fichiers. Archivez-les dans un fichier .tar.gz avant le transfert, ou utilisez rsync .
# Download a single file to your local machine
sudo scp <instance_username>@<public_ip_address>:<remote_file_path> <local_directory_path>

# Download a directory from the instance to your local machine
sudo scp -r <instance_username>@<public_ip_address>:<remote_directory_path> <local_directory_path>

Exemple :

Téléchargez /home/ecs-user/test.txt depuis une instance dont l'IP publique est 1xx.xxx.xxx.121 vers le répertoire local /opt/ :

sudo scp ecs-user@1xx.xxx.xxx.121:/home/ecs-user/test.txt /opt/

Utiliser sftp pour les transferts de fichiers interactifs

Le protocole SSH File Transfer Protocol (SFTP) démarre une session interactive pour la gestion des fichiers sur un serveur distant.

Se connecter à l'instance

Établissez une connexion sftp. Une fois connecté, l'invite devient sftp>.

sudo sftp <instance_username>@<public_ip_address>

Commandes interactives SFTP courantes

À l'invite sftp>, vous pouvez utiliser les commandes suivantes :

  • Opérations distantes : ls (liste le répertoire distant), cd (change de répertoire distant), pwd (affiche le chemin courant distant), mkdir (crée un répertoire distant), rm (supprime un fichier distant), rename (renomme un fichier distant).

  • Opérations locales : lls (liste le répertoire local), lcd (change de répertoire local), lpwd (affiche le chemin courant local).

Envoyer des fichiers ou des répertoires vers une instance

# Upload a single file
sftp> put <local_file_path> <remote_directory_path>

# Upload an entire directory
sftp> put -r <local_directory_path> <remote_directory_path>

Exemples :

  • Envoyez /opt/test.txt vers /home/ecs-user/ sur l'instance :

    sftp> put /opt/test.txt /home/ecs-user
  • Pour envoyer le répertoire local /opt/test/ vers le répertoire /home/ecs-user/ sur l'instance :

    sftp> put -r /opt/test/ /home/ecs-user/

Télécharger des fichiers ou des répertoires entiers depuis une instance

# Download a single file
sftp> get <remote_file_path> <local_directory_path>

# Download an entire directory
sftp> get -r <remote_directory_path> <local_directory_path>

Exemples :

  • Pour télécharger le fichier /home/ecs-user/test.txt depuis l'instance vers votre répertoire local /opt :

    sftp> get /home/ecs-user/test.txt /opt
  • Pour télécharger le répertoire /home/ecs-user/test/ depuis l'instance vers votre répertoire local /opt :

    sftp> get -r /home/ecs-user/test/ /opt

Reprendre un transfert

Si le transfert d'un fichier volumineux est interrompu, vous pouvez utiliser les commandes reput (envoi) et reget (téléchargement) pour reprendre le transfert là où il s'est arrêté.

# Resume an upload
sftp> reput <local_file_path> <remote_file_path>

# Resume a download
sftp> reget <remote_file_path> <local_file_path>
Note : La reprise de transfert SFTP n'est efficace que pour les fichiers uniques. Si le transfert d'un répertoire est interrompu, nous vous recommandons de quitter SFTP et d'utiliser rsync pour une synchronisation efficace.

Déconnecter la session

Lorsque vous avez terminé vos tâches, utilisez la commande quit ou bye pour quitter la session sftp.

Utiliser rsync pour la synchronisation de fichiers et de répertoires

rsync est idéal pour les transferts à grande échelle, incrémentiels ou répétitifs.

Installer l'outil

Assurez-vous que rsync est installé à la fois sur votre machine locale et sur l'instance.

# On CentOS / Alibaba Cloud Linux
sudo yum install -y rsync

# On Debian / Ubuntu
sudo apt-get update && sudo apt-get install -y rsync

Options courantes

L'utilisation standard de rsync inclut souvent les options -avz :

  • -a (archive) : Mode archive, équivalent à -rlptgoD. Il synchronise de manière récursive et préserve tous les attributs de fichier, tels que les permissions et les horodatages.

  • -v (verbose) : Affiche des informations détaillées sur le processus de transfert.

  • -z (compress) : Pour économiser de la bande passante, il compresse les données pendant le transfert. Toutefois, sur les liaisons à haut débit, la compression CPU peut devenir un goulot d'étranglement, et omettre -z peut être plus rapide.

Options courantes pour les environnements de production

  • --delete : Fait du répertoire de destination une réplique exacte de la source en supprimant tous les fichiers présents dans la destination mais absents de la source.

    Important

    Important : Il s'agit d'une opération à haut risque. Confirmez toujours que votre commande est correcte avant d'utiliser cet indicateur, de préférence en exécutant d'abord la commande avec --dry-run.

  • --exclude='PATTERN' : Exclut les fichiers ou répertoires correspondant au modèle spécifié, tel que --exclude='*.log' ou --exclude='node_modules/'.

  • --bwlimit=KBPS : Limite la bande passante de transfert en Ko/s. Cela empêche rsync de consommer toute la bande passante disponible et d'impacter d'autres services.

  • --dry-run ou -n : Simule une exécution. Affiche les fichiers qui seraient transférés sans réellement déplacer de données.

    Important

    Important : Nous vous recommandons vivement d'utiliser cette option pour vérifier votre commande avant d'exécuter toute opération incluant --delete.

  • --partial : Active la reprise des transferts. Si un transfert est interrompu, rsync conserve le fichier partiellement transféré, permettant à l'exécution suivante de continuer là où elle s'était arrêtée.

Envoyer ou synchroniser des fichiers et des répertoires vers une instance ECS

Pour envoyer des fichiers vers une instance, exécutez la commande suivante depuis votre machine locale. Vous serez invité à saisir votre mot de passe.

sudo rsync -avz -e ssh <local_path> <logon_username>@<public_ip_address>:<remote_path>

Exemples :

  • Pour envoyer le fichier /opt/test.txt vers le répertoire /home/ecs-user d'une instance dont l'adresse IP publique est 1xx.xxx.xxx.121 :

    sudo rsync -avz -e ssh /opt/test.txt ecs-user@1xx.xxx.xxx.121:/home/ecs-user
  • Pour synchroniser le répertoire local /opt/test/ avec le répertoire /home/ecs-user/test sur l'instance dont l'adresse IP publique est 1xx.xxx.xxx.121 :

    sudo rsync -avz -e ssh /opt/test/ ecs-user@1xx.xxx.xxx.121:/home/ecs-user/test

Télécharger ou synchroniser des fichiers et des répertoires depuis une instance

Pour télécharger des fichiers depuis une instance vers votre machine locale, exécutez la commande suivante localement. Vous serez invité à saisir votre mot de passe.

sudo rsync -avz -e ssh <instance_username>@<public_ip_address>:<remote_path> <local_path>

Application en production

  • Gérer un grand nombre de petits fichiers : archiver d'abord, puis transférer

    Le transfert d'un répertoire contenant des milliers de petits fichiers est inefficace avec l'un de ces outils en raison de la surcharge de connexion et de métadonnées pour chaque fichier. La bonne pratique consiste à archiver et compresser le répertoire en un seul fichier (par exemple, .tar.gz) sur la machine source, à transférer l'archive, puis à l'extraire sur la machine de destination.

  • Simplifier les commandes avec un fichier de configuration SSH

    Vous pouvez simplifier les commandes de connexion et de transfert en créant un alias pour votre instance ECS (par exemple, my-prod-server) dans votre fichier local ~/.ssh/config.

    # Add the following to ~/.ssh/config
    Host my-prod-server
        HostName 118.178.x.x
        User ecs-user
        Port 22
        IdentityFile ~/.ssh/id_rsa_aliyun
        ServerAliveInterval 60

    Cela simplifie vos commandes scp et rsync :

    # Original command:
    sudo scp -i ~/.ssh/id_rsa_aliyun local.txt ecs-user@118.178.x.x:/remote/
    # New command:
    sudo scp local.txt my-prod-server:/remote/
    
    # Original command:
    sudo rsync -avz -e "ssh -i ~/.ssh/id_rsa_aliyun" local_dir/ ecs-user@118.178.x.x:/remote_dir/
    # New command:
    sudo rsync -avz local_dir/ my-prod-server:/remote_dir/

FAQ

  • Comment transférer des fichiers en utilisant un port spécifique ?

    • scp : Pour spécifier le port, utilisez l'option -P (majuscule) : scp -P <port_number> ...

    • sftp : Pour spécifier le port, utilisez l'option -P (majuscule) : sftp -P <port_number> ...

    • rsync : Pour spécifier le port pour SSH, modifiez l'option -e : rsync -avz -e "ssh -p <port_number>" ...

  • Comment spécifier un fichier de clé privée lors de la connexion à une instance avec une paire de clés ?

    • scp : Pour spécifier le fichier de clé privée, utilisez l'option -i : scp -i <path_to_private_key> ...

    • sftp : Pour spécifier le fichier de clé privée, utilisez l'option -oIdentityFile : sftp -oIdentityFile=<path_to_private_key> ...

    • rsync : Pour spécifier la clé privée pour SSH, modifiez l'option -e : rsync -e "ssh -i <path_to_private_key>" ...

Références