Table des matières

⚡ En bref : la commande cp en 1 minute chrono

cp, c’est la commande Linux de base pour copier des fichiers ou des répertoires en ligne de commande.
C’est simple, rapide et incontournable quand tu travailles en terminal.

👉 À retenir :

  • 📄 cp fichier1.txt fichier2.txt → copie le fichier
  • 📁 cp -r dossier1 dossier2 → copie un répertoire entier
  • 🧩 Options utiles : -i (confirmation), -v (affichage), -u (copie si plus récent)

🔗 Lien utile : Documentation officielle GNU cp

Quand tu travailles sur un système Linux, il y a des commandes que tu vas utiliser tout le temps. Et cp en fait partie.
Pourquoi ? Parce qu’elle te permet de copier rapidement un fichier, un script, un dossier… sans passer par une interface graphique.

Que tu sois développeur, sysadmin, étudiant en informatique ou juste curieux d’apprendre, savoir utiliser cp t’évitera bien des clics inutiles — et t’ouvrira les portes d’un usage plus fluide et plus pro du terminal.

Dans ce guide, je t’explique :

  • Ce qu’est la commande cp et comment elle fonctionne
  • Comment copier un ou plusieurs fichiers
  • Comment copier un dossier entier (spoiler : il faut une option spéciale)
  • Quelles options utiliser pour éviter les erreurs
  • Et même quelques cas pratiques et alternatives pour aller plus loin

Prêt à devenir plus rapide que ton ombre sur le terminal ? C’est parti 💻

🧩 Qu’est-ce que la commande cp sous Linux ?

La commande cp (pour copy) permet de dupliquer un ou plusieurs fichiers et dossiers à partir du terminal Linux.
Elle fait partie des commandes de base présentes sur quasiment toutes les distributions (Ubuntu, Debian, CentOS, Arch…).

📚 Syntaxe générale :

cp [options] source destination

  • source : le fichier ou dossier que tu veux copier
  • destination : l’endroit où tu veux le coller

Exemples simples :

cp notes.txt sauvegarde_notes.txt
cp photo.jpg /home/utilisateur/Documents/

⚠️ À noter :

  • Si tu tentes de copier un dossier sans l’option -r, ça ne marchera pas.
  • Si un fichier du même nom existe déjà à l’arrivée, il sera écrasé sans avertissement (à moins d’utiliser -i).

💬 Définition rapide :
La commande cp en Linux sert à copier des fichiers ou des répertoires depuis le terminal. Elle accepte de nombreuses options pour adapter le comportement selon les besoins.

🧪 Copier un fichier : les bases à connaître

Commençons par l’essentiel : copier un seul fichier.

🎯 Copier un fichier dans le même dossier :

cp fichier.txt fichier_copie.txt

👉 Tu viens de créer une duplication du fichier, avec un nouveau nom.

📁 Copier un fichier vers un autre dossier :

cp fichier.txt /home/utilisateur/Documents/

👉 Le fichier est copié tel quel, dans le dossier de destination.

✨ Astuce :

Si tu veux copier plusieurs fichiers d’un coup, tu peux le faire très simplement :

cp fichier1.txt fichier2.txt fichier3.txt /chemin/du/dossier/

Et pour plus de confort (et de contrôle), tu peux ajouter l’option -v (verbeux) pour afficher ce que fait la commande :

cp -v fichier1.txt /home/user/Bureau/

🔍 Astuce bonus SEO-friendly :
Pour les débutants, cp est souvent plus rapide et plus sûr que les copier-coller manuels — surtout sur un serveur sans interface graphique.

🗂️ Copier un répertoire avec cp -r

Tu veux copier un dossier entier, avec tous les fichiers qu’il contient, voire des sous-dossiers à l’intérieur ?
Alors il te faut obligatoirement l’option -r, qui signifie récursif. Sans elle, tu auras un joli message d’erreur du genre :

cp: -r not specified; omitting directory 'mon_dossier'

📦 Copier un dossier dans un autre emplacement :

cp -r mon_dossier /home/utilisateur/Documents/

👉 Résultat : le dossier mon_dossier est copié tel quel dans le dossier Documents.

✏️ Copier un dossier sous un nouveau nom :

cp -r mon_dossier mon_dossier_backup

👉 Cela crée une copie locale du dossier avec un nom différent, ce qui est très pratique pour faire des sauvegardes rapides.

🧪 Exemple concret :

Imaginons que tu as une arborescence comme ceci :

projets/
├── site/
│   ├── index.html
│   └── style.css

Et tu veux copier le dossier site dans un autre répertoire :

cp -r projets/site/ sauvegardes/

👉 Tu obtiendras : sauvegardes/site/index.html, etc.

⚠️ Attention à la barre oblique finale !

Selon les cas, ajouter un / à la fin du dossier source peut changer le comportement :

cp -r dossier/ destination/

  • Avec / : seuls les contenus du dossier sont copiés dans destination/
  • Sans / : le dossier lui-même est copié dans destination/

💡 Astuce : quand tu veux garder l’organisation d’un projet intacte (ex : site web, app, etc.), pense à copier le dossier parent sans slash final.

🧰 Les options les plus utiles de la commande cp

La commande cp devient vraiment puissante quand tu commences à jouer avec ses options.
Elles te permettent de protéger tes fichiers, gagner du temps, et voir clairement ce que tu fais.

Voici les options que tu dois absolument connaître 👇

🔹 -i : confirmer avant d’écraser un fichier

Par défaut, si tu copies un fichier vers un emplacement où un fichier du même nom existe déjà, il sera écrasé sans avertissement 😬

Lire également  Internal Field Separator (IFS) : comment gérer les séparateurs en scripts shell

Avec -i (comme interactive), le terminal te demande confirmation avant d’écraser :

cp -i fichier.txt dossier/

👉 Tu verras s’afficher :

cp: overwrite 'dossier/fichier.txt'? 

💡 À utiliser quand tu veux éviter les mauvaises surprises.

🔹 -v : mode verbeux (affiche ce que fait cp)

Besoin de voir chaque fichier copié ?
L’option -v (verbose) est parfaite pour les copies multiples ou les scripts :

cp -v fichier1.txt fichier2.txt dossier/

👉 Le terminal te montre exactement ce qu’il copie.

🔹 -u : ne copie que si la source est plus récente

Tu veux copier uniquement les fichiers modifiés depuis la dernière fois ?
Utilise -u (update) :

cp -u fichier.txt sauvegarde/

👉 Cela évite de recopier inutilement un fichier identique.

🔹 -n : ne jamais écraser les fichiers existants

L’option -n (no-clobber) est une alternative silencieuse à -i : si le fichier existe, cp le saute sans poser de question.

cp -n fichier.txt dossier/

👉 Très utile en script ou backup automatique.

🔹 -a : mode archive (copie complète avec permissions)

Tu veux cloner un dossier avec ses permissions, dates de modification, liens symboliques, etc. ?
Utilise l’option -a (archive), qui équivaut à plusieurs options combinées (-r, -p, -d, etc.) :

cp -a mon_projet/ sauvegarde_projet/

🧠 C’est l’option à utiliser pour les sauvegardes fidèles de structure de dossiers.

🧾 Tableau récapitulatif des options

OptionFonctionÀ utiliser quand…
-iConfirme avant d’écraser un fichierTu veux éviter les accidents
-vAffiche les actions en coursTu veux voir ce que cp fait
-uCopie uniquement si le fichier source est plus récentTu fais des mises à jour manuelles
-nIgnore les fichiers existantsTu veux garder les versions en place
-rCopie récursive d’un dossierTu copies un dossier et son contenu
-aCopie complète avec permissions, liens, etc.Tu fais une vraie sauvegarde complète

Et maintenant que tu maîtrises les options clés, que dirais-tu d’explorer quelques cas pratiques ?
📂 Copier plusieurs fichiers à la fois, gérer des extensions, combiner des options… On voit ça dans la prochaine section ? 😊

🧪 Exemples pratiques de la commande cp

Une fois que tu maîtrises la syntaxe de base et les options, tu peux vraiment commencer à t’amuser (et à bosser plus efficacement !). Voici des cas d’usage fréquents de la commande cp :

📄 Copier plusieurs fichiers à la fois

Tu peux copier plusieurs fichiers en une seule ligne :

cp fichier1.txt fichier2.txt fichier3.txt /chemin/du/dossier/

👉 Tous ces fichiers seront copiés dans le dossier spécifié. Super pratique pour éviter de répéter la commande.

🔍 Copier tous les fichiers d’un type donné

Besoin de copier tous les fichiers .txt d’un dossier ? Utilise le joker * :

cp *.txt /chemin/du/dossier/

Tu peux aussi faire ça avec d’autres extensions (*.jpg, *.py, etc.)

💡 Astuce : Si tu veux inclure les sous-dossiers, tu devras utiliser find, rsync ou une boucle for.

🧱 Copier tout le contenu d’un dossier sans le dossier lui-même

Tu veux copier tout ce qu’il y a dans un dossier, mais pas le dossier lui-même ?

cp -r mon_dossier/* /autre/emplacement/

👉 Seuls les fichiers et sous-dossiers seront copiés, pas le dossier « mon_dossier » lui-même.

🛡️ Copier un fichier en conservant ses permissions et dates

cp -p mon_script.sh sauvegarde/

L’option -p (preserve) conserve les :

  • permissions,
  • propriétaire,
  • timestamp.

Pratique si tu veux garder un fichier exécutable intact.

🧙 Copier intelligemment (sans écraser + verbeux)

Tu veux copier en voyant ce que tu fais mais sans écraser ce qui existe déjà ? Combine plusieurs options :

cp -vn *.md /home/user/notes/

👉 Tu verras chaque copie, mais rien ne sera écrasé.

🪄 Bonus : copier avec retour visuel dans un script

Dans un script bash, tu peux faire :

cp -v "$fichier" "$destination" && echo "✅ $fichier copié avec succès"

👍 Ça donne un retour positif à chaque action, très utile en automatisation.

Tu veux encore plus de maîtrise ?
Dans la prochaine partie, je te montre les erreurs fréquentes à éviter avec cp. Parce que oui, même les pros peuvent se faire avoir 😅 On continue ?

⚠️ Les erreurs fréquentes à éviter avec cp

Même si cp est une commande simple en apparence, de nombreuses erreurs peuvent survenir si on n’est pas attentif. Et certaines peuvent même entraîner la perte de fichiers ou des copies mal placées…

Voici les pièges les plus fréquents, et comment les éviter 👇

❌ Oublier -r pour copier un dossier

C’est l’erreur classique. Si tu tentes de copier un répertoire sans l’option -r (ou -a), ça ne fonctionnera pas :

cp mon_dossier sauvegarde/

Résultat :

cp: -r not specified; omitting directory 'mon_dossier'

Solution : pense toujours à cp -r mon_dossier/ sauvegarde/

❌ Écraser un fichier existant sans t’en rendre compte

Par défaut, cp écrase les fichiers sans rien demander. Tu penses avoir fait une sauvegarde, et… tu viens d’écraser un fichier important 😬

Solution : ajoute -i pour confirmer avant d’écraser, ou -n pour ne jamais écraser.

❌ Copier dans un répertoire mal défini (ou mal nommé)

Un oubli de slash peut tout changer :

cp mon_fichier dossier

👉 Si dossier n’existe pas, cp va créer un fichier nommé “dossier” contenant une copie de “mon_fichier”.

Solution : vérifie que le dossier de destination existe (ls, mkdir -p) ou ajoute un / à la fin : dossier/

❌ Ne pas vérifier les droits d’écriture

Tu copies vers un dossier où tu n’as pas les droits ? La commande échouera (parfois silencieusement si tu ne regardes pas).

Solution : utilise ls -l pour vérifier les permissions, ou fais appel à sudo si nécessaire :

sudo cp fichier.txt /répertoire_protégé/

❌ Confondre cp avec mv

Petit rappel : cp copie (et garde l’original), alors que mv déplace (et supprime la source).
Si tu fais un mv en pensant copier, tu risques de perdre l’original.

Solution : toujours vérifier que tu utilises la bonne commande selon ton besoin.

Ces erreurs sont faciles à éviter quand tu les connais — mais elles peuvent coûter cher si tu travailles sur des fichiers critiques ou sur un serveur distant.

Et justement, parfois, cp ne suffit pas… Dans la prochaine section, je te propose des alternatives plus puissantes ou plus adaptées selon les cas d’usage 👇 Tu veux la suite ?

🧭 Alternatives à cp pour des besoins plus avancés

Voici les outils que je te recommande d’explorer si tu veux aller plus loin que la simple copie avec cp.

🌀 rsync : pour des copies synchronisées et intelligentes

rsync est un outil ultra-puissant pour copier des fichiers localement ou à distance, tout en optimisant la copie (seuls les fichiers modifiés sont transférés).

📥 Exemple simple :

rsync -av mon_dossier/ sauvegarde/

  • -a : mode archive (comme avec cp -a)
  • -v : mode verbeux (affiche les fichiers copiés)

✅ Avantages :

  • Copie incrémentielle (rapide si tu mets à jour souvent)
  • Parfait pour les sauvegardes
  • Fonctionne aussi en SSH (rsync -avz dossier/ user@serveur:/destination/)

🔐 scp : pour copier des fichiers en SSH

Tu veux copier des fichiers vers un serveur distant via le terminal ? scp (Secure Copy) est fait pour toi.

📤 Exemple :

scp fichier.txt user@192.168.1.10:/home/user/

👉 Le fichier est transféré en toute sécurité, via une connexion SSH.

✅ Parfait pour le déploiement ou l’administration système à distance.

🧱 dd : pour copier des disques ou des partitions

dd est une commande bas niveau pour copier bit à bit un disque, une clé USB, ou une partition.

💽 Exemple :

dd if=/dev/sdX of=/chemin/backup.img bs=4M status=progress

  • if = input file (source)
  • of = output file (destination)

⚠️ Attention : dd peut tout écraser sans avertissement. À manipuler avec précaution !

🧙 Bonus : interfaces graphiques pour copier facilement

Si tu travailles parfois en interface graphique (GUI), tu peux aussi utiliser :

  • Midnight Commander (mc) : gestionnaire de fichiers en ligne de commande, très pratique
  • Nautilus (Gnome) ou Dolphin (KDE) : avec des options avancées de copie
  • FileZilla ou Cyberduck : pour les transferts FTP/SFTP

🧾 Tableau récapitulatif des alternatives

OutilIdéal pour…Particularité
cpCopies simples localesRapide et disponible partout
rsyncSauvegardes et synchronisationsCopie intelligente, évite les doublons
scpCopie de fichiers à distance (SSH)Sécurisé, simple
ddClonage de disques/partitionsNiveau bas, très puissant
GUICopies ponctuelles avec sourisPlus visuel, moins automatisable

Tu vois, selon ce que tu veux faire, cp n’est pas toujours la meilleure solution. Mais c’est une excellente base pour apprendre à dompter ton terminal ✨

💬 Conclusion

Tu l’as vu, la commande cp est bien plus qu’un simple outil pour copier des fichiers.
Elle peut devenir un véritable réflexe de travail, à condition de connaître :

  • ses bases (fichier ➜ fichier, dossier ➜ dossier),
  • ses options utiles (-r, -i, -v, -a, etc.),
  • et surtout ses pièges à éviter.

Que tu sois débutant sur Linux ou que tu veuilles juste gagner du temps en ligne de commande, cp est un indispensable de ta boîte à outils.
Et quand tu commenceras à avoir des besoins plus poussés, tu pourras explorer des outils comme rsync ou scp les yeux fermés (ou presque 😉).

👉 Tu veux progresser encore ?
Teste les commandes sur ton propre système, crée un petit dossier de test, et amuse-toi à combiner les options. Rien ne vaut la pratique !

Et si cet article t’a aidé, pense à le partager à un(e) collègue qui débute sur Linux 💡