Quand on déploie une configuration sur un serveur, récupère des logs ou transfère un fichier rapidement entre deux machines, scp (Secure Copy Protocol) est l’outil le plus direct. Il utilise SSH pour chiffrer le transfert de bout en bout : une seule commande, pas de serveur FTP à configurer. Pour les transferts ponctuels et rapides, scp reste imbattable en simplicité.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Copier un fichier vers ou depuis un serveur distant
- Transférer un répertoire complet avec
-r - Utiliser un port SSH personnalisé avec
-P(majuscule) - Connaître la différence entre
-pet-P - Identifier quand préférer rsync à scp
La commande scp dans l’écosystème Linux
Section intitulée « La commande scp dans l’écosystème Linux »scp fait partie des outils de transfert de fichiers sous Linux. Chaque outil a sa spécialité :
| Commande | Spécialité | Quand l’utiliser |
|---|---|---|
scp | Copie distante via SSH | Transfert rapide one-shot |
rsync | Synchronisation intelligente (delta) | Sauvegardes, gros fichiers, reprise |
sftp | Transfert interactif via SSH | Navigation distante, sessions prolongées |
tar + ssh | Archivage + transfert | Arbres de fichiers avec permissions complexes |
curl / wget | Téléchargement HTTP/FTP | Récupérer depuis le web |
Quand utiliser scp plutôt que les autres :
| Situation | Meilleur outil | Pourquoi |
|---|---|---|
| Copier un fichier unique vers un serveur | scp | Plus simple que rsync pour un seul fichier |
| Sauvegarder un dossier régulièrement | rsync | Ne transfère que les différences |
| Transfert coupé en cours | rsync -P | scp recommence à zéro |
| Transférer un fichier très volumineux | rsync | Reprise possible, bande passante contrôlée |
| Récupérer un log rapidement | scp | Une seule commande, rapide |
| Synchronisation bi-directionnelle | unison | rsync et scp sont unidirectionnels |
Comprendre scp en 2 min
Section intitulée « Comprendre scp en 2 min »🧠 Modèle mental — Comment fonctionne scp
scp = Source → [Tunnel SSH chiffré] → Destination
Points clés
- scp copie des fichiers à travers un tunnel SSH chiffré
- La syntaxe user@host:chemin désigne un emplacement distant
- Sans -r, scp ne copie que des fichiers (pas de dossiers)
- -P (majuscule) pour le port, -p (minuscule) pour préserver les permissions
- Aucune reprise de transfert possible : si ça coupe, on recommence
- Pour des transferts réguliers, préférer rsync à scp
Règles d'or
Vocabulaire essentiel
- -r
- Récursif : copie les dossiers et leur contenu
- -P (majuscule)
- Spécifier le port SSH (attention : majuscule !)
- -p (minuscule)
- Préserver permissions et dates
- -C
- Activer la compression pendant le transfert
- -q
- Mode silencieux (pas de barre de progression)
- -v
- Mode verbeux (détails de connexion SSH)
📚 Pour aller plus loin — 6 options avancées
- -l
- Limiter la bande passante (en Kbit/s)
- -3
- Transfert entre 2 serveurs via la machine locale
- -i
- Spécifier un fichier de clé privée SSH
- -o
- Passer des options SSH (StrictHostKeyChecking, etc.)
- -F
- Utiliser un fichier de config SSH alternatif
- -c
- Choisir l'algorithme de chiffrement
Le principe est simple : scp prend un fichier source (local ou distant), le fait passer à travers un tunnel SSH chiffré, et le dépose à la destination (locale ou distante). C’est exactement comme cp, mais à travers le réseau et de manière sécurisée.
Syntaxe minimale
Section intitulée « Syntaxe minimale »scp [OPTIONS] SOURCE DESTINATIONLes 3 scénarios d’utilisation
Section intitulée « Les 3 scénarios d’utilisation »| Scénario | Syntaxe | Exemple |
|---|---|---|
| Local → Distant | scp fichier user@srv:/dest/ | scp config.conf admin@web-01:/etc/nginx/ |
| Distant → Local | scp user@srv:/fichier /local/ | scp admin@web-01:/var/log/app.log ~/logs/ |
| Distant → Distant | scp -3 user1@srv1:/f user2@srv2:/dest/ | scp -3 admin@web-01:/log admin@backup:/logs/ |
⚠️ Le piège -p vs -P (CRITIQUE)
Section intitulée « ⚠️ Le piège -p vs -P (CRITIQUE) »C’est la source d’erreur n°1 avec scp :
| Option | Signification | Exemple |
|---|---|---|
-p (minuscule) | Préserve les permissions et dates | scp -p script.sh user@srv:/opt/ |
-P (majuscule) | Port SSH personnalisé | scp -P 2222 fichier user@srv:/tmp/ |
Astuce mnémotechnique : Port = Pmajuscule, permissions = pminuscule.
# ❌ ERREUR FRÉQUENTE : -p au lieu de -P pour le portscp -p 2222 fichier.txt user@serveur:/tmp/# → Ne change pas le port, préserve les permissions et essaie de copier "2222" !
# ✅ CORRECT : -P (majuscule) pour le portscp -P 2222 fichier.txt user@serveur:/tmp/Les options essentielles
Section intitulée « Les options essentielles »| Option | Signification | Usage |
|---|---|---|
-r | Récursif | Copier un dossier complet |
-P <port> | Port SSH | Serveur SSH sur port non standard |
-p | Préserver | Conserver permissions et dates |
-C | Compression | Accélérer sur connexions lentes |
-v | Verbose | Débugger les problèmes SSH |
-q | Quiet | Pas de barre de progression |
-l <Kbit/s> | Limiter | Contrôler la bande passante |
-i <clé> | Identity | Utiliser une clé SSH spécifique |
La combo standard :
# Envoi simple vers un serveurscp config.conf admin@web-01:/etc/nginx/
# Dossier complet avec compression et port personnaliséscp -r -C -P 2222 ~/projet/ deployer@prod:/var/www/app/
# Récupérer des logs avec préservation des datesscp -p admin@web-01:/var/log/app.log ~/logs/Transférer un dossier complet
Section intitulée « Transférer un dossier complet »Par défaut, scp ne copie que les fichiers simples. Pour copier un dossier avec tout son contenu, l’option -r (récursif) est obligatoire :
# ❌ ERREUR : scp refuse de copier un dossier sans -rscp dossier/ user@serveur:/tmp/# → "not a regular file"
# ✅ CORRECT : -r pour récursifscp -r dossier/ user@serveur:/tmp/Transfert entre deux serveurs distants
Section intitulée « Transfert entre deux serveurs distants »L’option -3 permet de copier un fichier d’un serveur à un autre en passant par votre machine locale comme relais :
# Copie logs de web-01 vers backup-01, via votre machinescp -3 admin@web-01:/var/log/app.log admin@backup-01:/logs/Sans -3, scp tente une connexion directe entre les deux serveurs (qui doit être autorisée).
Utiliser une clé SSH spécifique
Section intitulée « Utiliser une clé SSH spécifique »Pour les transferts automatisés (scripts, CI/CD), utilisez une clé dédiée :
# Clé SSH spécifiquescp -i ~/.ssh/deploy_key app.tar.gz deployer@prod:/releases/
# Combiné avec port personnaliséscp -i ~/.ssh/deploy_key -P 2222 app.tar.gz deployer@prod:/releases/Compression et bande passante
Section intitulée « Compression et bande passante »Sur les connexions lentes ou pour les fichiers texte volumineux, la compression accélère le transfert :
# Compression activéescp -C database-dump.sql admin@backup:/dumps/
# Limiter la bande passante (en Kbit/s, pas Ko/s !)scp -l 800 gros-fichier.iso user@serveur:/data/# 800 Kbit/s ≈ 100 Ko/sBonnes pratiques de sécurité
Section intitulée « Bonnes pratiques de sécurité »- Utiliser des clés SSH plutôt que des mots de passe pour l’automatisation
- Vérifier les permissions après transfert :
ssh user@srv "ls -la /chemin/" - Préférer un compte non-root pour les transferts, puis déplacer avec
sudosi nécessaire - Surveiller les connexions :
sudo journalctl -u ssh
Quand passer à rsync
Section intitulée « Quand passer à rsync »scp est idéal pour les transferts ponctuels. Mais pour certains cas, rsync est meilleur :
| Critère | scp | rsync |
|---|---|---|
| Reprise de transfert | ❌ Recommence à zéro | ✅ Reprend où il s’est arrêté |
| Transfert delta | ❌ Copie tout | ✅ Ne copie que les changements |
| Exclusion de fichiers | ❌ Impossible | ✅ --exclude |
| Dry-run | ❌ Impossible | ✅ -n pour tester |
| Simplicité | ✅ Plus simple | ⚠️ Plus d’options à connaître |
| Disponibilité | ✅ Partout | ⚠️ Pas toujours installé |
Règle simple : transfert ponctuel → scp. Transfert récurrent ou volumineux → rsync.
Les patterns de transfert courants
Section intitulée « Les patterns de transfert courants »Maintenant que vous maîtrisez les bases, voici des patterns prêts à l’emploi pour les cas fréquents.
Ces recettes couvrent les cas d'usage les plus fréquents. Cliquez sur un pattern pour voir la formule complète et un exemple prêt à copier.
Fichier local → serveur distant Base Envoyer un fichier vers un serveur.
scp config.conf admin@web-01:/etc/nginx/
scp <fichier> user@serveur:<destination>/ scp config.conf admin@web-01:/etc/nginx/ -
<fichier>— Chemin du fichier local -
user@serveur— Identifiant et adresse du serveur -
<destination>— Chemin sur le serveur
Serveur distant → machine locale Base Récupérer un fichier depuis un serveur.
scp admin@web-01:/var/log/nginx/error.log ~/logs/
scp user@serveur:<fichier> <destination>/ scp admin@web-01:/var/log/nginx/error.log ~/logs/ -
user@serveur:<fichier>— Source distante -
<destination>— Dossier local
Dossier complet récursif Base Copier un répertoire avec tout son contenu.
scp -r ~/projet/ deployer@prod:/var/www/app/
scp -r <dossier>/ user@serveur:<destination>/ scp -r ~/projet/ deployer@prod:/var/www/app/ -
-r— Copie récursive
Port SSH personnalisé Inter. Transférer quand le serveur SSH n'écoute pas sur le port 22.
scp -P 2222 backup.tar.gz admin@srv:/backups/
scp -P <port> <fichier> user@serveur:<destination>/ scp -P 2222 backup.tar.gz admin@srv:/backups/ -
-P— Port SSH (attention : majuscule !)
Transfert entre deux serveurs Inter. Copier un fichier d'un serveur à un autre via la machine locale.
scp -3 admin@web-01:/var/log/app.log admin@backup-01:/logs/
scp -3 user1@srv1:<fichier> user2@srv2:<destination>/ scp -3 admin@web-01:/var/log/app.log admin@backup-01:/logs/ -
-3— Passer par la machine locale comme relais
Préserver les attributs Base Conserver les permissions et dates du fichier.
scp -p deploy.sh admin@prod:/opt/scripts/
scp -p <fichier> user@serveur:<destination>/ scp -p deploy.sh admin@prod:/opt/scripts/ -
-p— Préserve permissions, dates modification et accès
Transfert compressé Inter. Accélérer le transfert sur connexions lentes.
scp -C database-dump.sql admin@backup:/dumps/
scp -C <fichier> user@serveur:<destination>/ scp -C database-dump.sql admin@backup:/dumps/ -
-C— Active la compression (efficace pour le texte)
Clé SSH spécifique Inter. Utiliser une clé SSH dédiée au transfert.
scp -i ~/.ssh/deploy_key app.tar.gz deployer@prod:/releases/
scp -i <clé> <fichier> user@serveur:<destination>/ scp -i ~/.ssh/deploy_key app.tar.gz deployer@prod:/releases/ -
-i— Chemin vers la clé privée SSH
Aucune recette ne correspond à votre recherche.
Les pièges à éviter
Section intitulée « Les pièges à éviter »Ces erreurs courantes peuvent faire perdre du temps ou causer des dégâts. Les pièges les plus critiques sont affichés en premier.
Confusion entre -p et -P scp -p 2222 fichier.txt user@serveur:/tmp/
Attention
scp -p 2222 fichier.txt user@serveur:/tmp/
scp -P 2222 fichier.txt user@serveur:/tmp/ Oubli du -r pour les dossiers scp dossier/ user@serveur:/tmp/
Attention
scp dossier/ user@serveur:/tmp/
scp -r dossier/ user@serveur:/tmp/ Espaces dans les chemins distants scp user@serveur:/home/user/Mon Dossier/file.txt .
Attention
scp user@serveur:/home/user/Mon Dossier/file.txt .
scp "user@serveur:/home/user/Mon\ Dossier/file.txt" . Écrasement silencieux sans confirmation scp user@serveur:/config/new.conf ~/config/important.conf
Attention
scp user@serveur:/config/new.conf ~/config/important.conf
cp ~/config/important.conf ~/config/important.conf.bak && scp user@serveur:/config/new.conf ~/config/important.conf Pas de reprise de transfert scp gros-fichier.iso user@serveur:/data/ (coupure réseau)
Info
scp gros-fichier.iso user@serveur:/data/ (coupure réseau)
rsync -avP gros-fichier.iso user@serveur:/data/ Unité de -l en Kbit/s (pas Ko/s) scp -l 100 fichier user@srv:/tmp/ # pensant limiter à 100 Ko/s
Info
scp -l 100 fichier user@srv:/tmp/ # pensant limiter à 100 Ko/s
scp -l 800 fichier user@srv:/tmp/ # ≈ 100 Ko/s Dépannage
Section intitulée « Dépannage »🔧 Quand ça ne marche pas
Méthodes de debug
Mode verbeux
Affiche tous les détails de la négociation SSH et du transfert.
scp -v fichier.txt user@serveur:/tmp/ Tester la connexion SSH
Vérifier que SSH fonctionne avant scp.
ssh -v user@serveur "echo OK" Vérifier le port SSH
S'assurer que le port est ouvert.
nc -zv serveur 22 Tester avec un petit fichier
Isoler un problème de taille de fichier.
echo "test" | ssh user@serveur "cat > /tmp/test.txt" Erreurs fréquentes
scp: /chemin/fichier: Permission denied
- L'utilisateur distant n'a pas les droits d'écriture
- Le répertoire destination n'existe pas
- Vérifier les permissions : ssh user@serveur "ls -la /chemin/"
- Vérifier l'existence du dossier : ssh user@serveur "test -d /chemin && echo OK"
Ajuster les permissions ou copier vers un dossier autorisé (/tmp/)
ssh user@serveur "ls -la /chemin/" ssh: connect to host serveur port 22: Connection refused
- Le service SSH n'est pas démarré sur le serveur
- Le pare-feu bloque le port 22
- Le serveur utilise un port différent
- Tester le port : nc -zv serveur 22
- Vérifier SSH : ssh user@serveur
Démarrer sshd, ouvrir le port dans le pare-feu, ou utiliser -P <port>
nc -zv serveur 22 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
- Le serveur a été réinstallé
- Attaque man-in-the-middle (rare mais possible)
- Vérifier avec l'admin si le serveur a changé
- Comparer l'empreinte : ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
Supprimer l'ancienne clé et reconnecter
ssh-keygen -R serveur && ssh user@serveur scp: /chemin/dossier: not a regular file
- Tentative de copier un dossier sans l'option -r
- Vérifier si la source est un dossier : file /chemin/dossier
Ajouter l'option -r pour copier récursivement
scp -r dossier/ user@serveur:/tmp/ scp: /chemin/fichier: No space left on device
- Le disque de destination est plein
- Le quota utilisateur est atteint
- Vérifier l'espace : ssh user@serveur "df -h"
- Vérifier le quota : ssh user@serveur "quota -v"
Libérer de l'espace ou augmenter le quota sur le serveur distant
ssh user@serveur "df -h /chemin/" Cheatsheet
Section intitulée « Cheatsheet » 📋
Cheatsheet scp
📝 Syntaxe :
scp fichier user@host:/chemin/ Envoyer un fichier scp user@host:/chemin/fichier . Récupérer un fichier scp -3 user1@srv1:f user2@srv2:/ Transfert inter-serveurs 🚀 Commandes types :
scp config.conf admin@web-01:/etc/nginx/ scp admin@web-01:/var/log/nginx/error.log ~/logs/ scp -r ~/projet/ deployer@prod:/var/www/app/ scp -p deploy.sh admin@prod:/opt/scripts/ ⚙️ Options
-r | Copie récursive (dossiers) | scp -r dossier/ user@srv:/tmp/ |
-P <port> | Port SSH (MAJUSCULE) | scp -P 2222 f.txt user@srv:/ |
-p | Préserve permissions/dates | scp -p script.sh user@srv:/ |
-C | Active la compression | scp -C dump.sql user@srv:/ |
-v | Mode verbeux (debug) | scp -v f.txt user@srv:/ |
-q | Mode silencieux | scp -q f.txt user@srv:/ |
-l <Kbit/s> | Limiter la bande passante | scp -l 800 f user@srv:/ |
-i <clé> | Clé SSH privée | scp -i ~/.ssh/key f user@srv:/ |
-o <option> | Option SSH | scp -o StrictHostKeyChecking=no f srv:/ |
-F <config> | Fichier config SSH alternatif | scp -F ~/.ssh/custom f srv:/ |
-c <algo> | Algorithme de chiffrement | scp -c aes256-ctr f user@srv:/ |
🔗 Composition
scp -r -C -P 2222 | Dossier + compression + port | scp -r -C -P 2222 d/ u@s:/ |
scp -p -i key fichier | Préserver + clé spécifique | scp -p -i key f u@s:/ |
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
Points clés à retenir :
Section intitulée « Points clés à retenir : »-r: obligatoire pour copier un dossier-P(majuscule) pour le port,-p(minuscule) pour les permissions-v: indispensable pour diagnostiquer les problèmes SSH- Pas de reprise : si le transfert s’interrompt, il recommence
- Préférer rsync pour les transferts réguliers ou volumineux