scp et rsync : copier des fichiers
Deux commandes pour transférer des fichiers entre votre ordinateur et un serveur : quand scp suffit, à quoi rsync est utile, et comment ne pas écraser le répertoire d'autrui à cause d'une barre oblique finale.
Mis à jour le 23 août 2026
Un client graphique est pratique pour une modification ponctuelle, mais les déploiements et les sauvegardes sont plus simples à réaliser avec une seule commande.
scp : copie ponctuelle
La syntaxe est la même que celle de cp, à la différence qu'on indique une adresse de machine :
scp dump.sql root@203.0.113.10:/root/
scp root@203.0.113.10:/var/log/nginx/error.log ./
scp -r ./site root@203.0.113.10:/var/www/
La première commande envoie un fichier, la deuxième en récupère un, la troisième copie un répertoire entier (-r).
Si SSH écoute sur un autre port, précisez-le avec un -P majuscule :
scp -P 2222 dump.sql root@203.0.113.10:/root/
Avec un fichier ~/.ssh/config, les commandes deviennent plus courtes : scp dump.sql vds:/root/.
rsync : synchronisation
rsync ne transfère que les différences, peut reprendre un transfert interrompu et afficher la progression. Pour des déploiements répétés, il est bien plus rapide.
rsync -avz --progress ./site/ root@203.0.113.10:/var/www/example.com/
| Option | Ce qu'elle fait |
|---|---|
-a | Préserve les permissions, les horodatages, les liens |
-v | Affiche la liste des fichiers |
-z | Compresse le flux |
--progress | Affiche la progression du transfert |
--delete | Supprime sur la machine tout ce que vous n'avez pas |
--exclude | Ignore tout ce qui est inutile |
Un exemple de déploiement propre :
rsync -avz --delete \
--exclude '.git' --exclude 'node_modules' --exclude '.env' \
./site/ vds:/var/www/example.com/
Récupérez une copie depuis la machine vers votre côté :
rsync -avz vds:/root/backup-2026-08-23.tar.gz ./backups/
Une barre oblique finale sur la source signifie « le contenu du répertoire ».
./site/place les fichiers dans la cible,./sitecrée un sous-répertoiresitedans la cible. La moitié des déploiements « manquants » viennent de là.
Attention à --delete
L'option --delete fait du répertoire sur la machine une copie exacte du vôtre : tout élément superflu est supprimé sans demander confirmation. Faites d'abord une simulation :
rsync -avzn --delete ./site/ vds:/var/www/example.com/
L'option -n montre seulement ce qui se passerait. Une fois certain, retirez le n.
Vitesse
La vitesse du disque est plafonnée selon le grade : écriture à 60 Mo/s par cœur (pas moins de 60 et pas plus de 400), lecture deux fois plus rapide, et un burst trois fois supérieur au plafond tient pendant 30 secondes. La bande passante réseau va jusqu'à 500 Mbit/s. Sur VDS-1, l'envoi d'une grosse archive atteindra la limite d'écriture, et c'est normal, pas une panne. Pour vérifier ce qui se passe :
df -h
iostat -x 2
Erreurs courantes
| Symptôme | Cause |
|---|---|
Permission denied | Vous écrivez dans un répertoire qui n'appartient pas à votre utilisateur — connectez-vous en root ou changez le propriétaire |
No such file or directory | Le répertoire n'existe pas sur la machine et scp ne le crée pas : lancez mkdir -p au préalable |
| Les fichiers ont atterri un niveau plus haut | Une barre oblique finale manquante ou en trop dans le chemin |
rsync: command not found | Installez le paquet des deux côtés : apt install -y rsync |
| Le site renvoie 403 après le déploiement | Le propriétaire n'est pas défini : chown -R www-data:www-data /var/www/example.com |
Si vous préférez un client graphique, consultez le transfert de fichiers via SFTP.