macOS Terminal : cp, copier vos fichiers facilement

Notre commande Unix du Vendredi soir : cp

Vous avez déjà dupliqué un projet entier sur votre Mac en glissant un dossier dans le Finder, pour réaliser dix minutes plus tard que la copie n’est pas terminée et qu’aucune barre de progression ne vous indique où vous en êtes ?

Ou peut-être avez-vous besoin de copier une arborescence complexe vers un disque externe, en excluant certains types de fichiers, depuis un script automatisé qui tourne la nuit ?

Le Finder est un outil remarquable pour la navigation visuelle au quotidien. Mais dès que la tâche gagne en volume, en précision ou en répétition, il montre ses limites.

La commande cp du Terminal macOS répond exactement à ces situations. Elle copie des fichiers et des dossiers avec une précision chirurgicale, sans interface graphique, sans délai d’affichage superflu, et avec un contrôle total sur ce qui est copié, comment, et vers où.

Ce guide vous montre comment utiliser cp et son option -r de manière concrète, depuis les cas les plus simples jusqu’aux usages que même les utilisateurs expérimentés négligent parfois.

Anatomie d’une commande qui copie tout ce qu’on lui demande

cp est l’abréviation de copy. C’est une commande POSIX standard, présente sur macOS depuis ses origines Unix, et documentée dans la man page officielle livrée avec le système d’exploitation.

Sa syntaxe de base est la suivante :

cp [options] source destination

La source est le chemin du fichier ou du dossier à copier. La destination est l’endroit où la copie doit être placée. Ces deux arguments sont obligatoires.

Les options essentielles à connaître

-r ou -R : copie récursive. Cette option est indispensable dès que vous souhaitez copier un dossier et tout ce qu’il contient (sous-dossiers inclus). Sans elle, cp refuse de copier un répertoire et retourne une erreur.

-i : mode interactif. Avant d’écraser un fichier existant à la destination, cp vous demande une confirmation explicite. Recommandé lorsque vous n’êtes pas certain que la destination est vide.

-n : sans écrasement. Si un fichier portant le même nom existe déjà à la destination, cp l’ignore silencieusement. Pratique pour des sauvegardes où vous ne voulez pas toucher à ce qui existe déjà.

-p : préservation des métadonnées. La copie conserve les permissions, les dates de modification et le propriétaire du fichier d’origine. Utile lorsque les attributs du fichier ont une importance pour une application ou un script.

-v : mode verbeux. Affiche chaque fichier au fur et à mesure qu’il est copié. Rassurant pour les opérations longues sur de gros volumes de données.

Ces options peuvent être combinées. Par exemple :

cp -rp source/ destination/

Cette combinaison copie récursivement tout le contenu de source/ vers destination/, en préservant les métadonnées de chaque fichier.

Trois scénarios du quotidien, un seul outil

Scénario 1 : dupliquer un document de travail avant de le modifier

Vous allez restructurer en profondeur un rapport annuel stocké dans votre dossier Documents. Avant de toucher au fichier original, vous souhaitez en conserver une copie de sécurité dans le même répertoire.

cp /Users/henrido/Documents/rapport-annuel-2025.pdf /Users/henrido/Documents/rapport-annuel-2025-backup.pdf

La commande crée immédiatement une copie identique sous un nouveau nom. Pas de dialogue, pas d’attente : l’opération est instantanée pour un fichier de taille standard.

Scénario 2 : copier un projet entier vers un disque externe

Vous travaillez sur un projet de développement dans /Users/henrido/Documents/MonProjet/. Votre disque externe LaCie s’est monté à /Volumes/LaCie/. Vous souhaitez archiver l’intégralité du projet.

cp -r /Users/henrido/Documents/MonProjet/ /Volumes/LaCie/Sauvegardes/MonProjet/

L’option -r garantit que chaque sous-dossier, fichier de configuration, asset et script est copié, quelle que soit la profondeur de l’arborescence.

Note : si votre projet contient plusieurs centaines de fichiers, ajoutez -v pour voir la progression en temps réel.

Scénario 3 : copier plusieurs fichiers d’un coup vers un même dossier

Vous voulez rassembler trois contrats PDF depuis votre dossier Bureau dans un dossier d’archive :

cp /Users/henrido/Desktop/contrat-A.pdf /Users/henrido/Desktop/contrat-B.pdf /Users/henrido/Desktop/contrat-C.pdf /Users/henrido/Documents/Archives/Contrats/

Lorsque plusieurs sources précèdent une destination, cp comprend que la destination est un dossier et y dépose chacun des fichiers. La destination doit exister au préalable : cp ne crée pas les dossiers manquants. Si nécessaire, créez-les d’abord avec mkdir -p.

La combinaison qui change tout : cp avec les wildcards

La véritable puissance de cp en ligne de commande se révèle lorsqu’on l’associe aux caractères génériques du shell, appelés wildcards ou glob patterns.

Copier uniquement les fichiers d’un certain type

Imaginons que vous souhaitez archiver tous les fichiers JPEG d’un dossier de photos sans toucher aux fichiers RAW :

cp /Users/henrido/Pictures/Vacances2025/*.jpg /Users/henrido/Documents/Archives/Photos/

Le caractère * est interprété par le shell macOS comme « tout ce qui précède .jpg« . Seuls les fichiers JPEG sont concernés par la copie.

Copier en excluant les doublons existants

Si votre dossier d’archive contient déjà des copies partielles de vos photos, utilisez l’option -n pour ne copier que les nouveaux fichiers :

cp -n /Users/henrido/Pictures/Vacances2025/*.jpg /Users/henrido/Documents/Archives/Photos/

Chaque fichier déjà présent à la destination est ignoré. Ceux qui manquent sont copiés. C’est l’équivalent d’une synchronisation unidirectionnelle simple, sans outil tiers.

Combiner plusieurs options pour une copie sécurisée et lisible

cp -rnv /Users/henrido/Documents/MonProjet/ /Volumes/LaCie/Sauvegardes/MonProjet/

Cette ligne combine trois comportements : copie récursive (-r), protection contre l’écrasement (-n) et affichage de chaque fichier traité (-v). C’est la formule recommandée pour une première sauvegarde manuelle vers un disque externe.

Comprendre la différence entre /dossier et /dossier/

Un détail qui échappe souvent aux débutants : le comportement de cp -r change selon que le chemin source se termine par une barre oblique ou non.

cp -r /Users/henrido/Documents/MonProjet /Volumes/LaCie/

Cette commande crée /Volumes/LaCie/MonProjet/ avec tout son contenu.

cp -r /Users/henrido/Documents/MonProjet/ /Volumes/LaCie/

Ici, si /Volumes/LaCie/ existe déjà, cp dépose le contenu de MonProjet directement dans /Volumes/LaCie/MonProjet/. Le comportement est identique dans les deux cas si la destination n’existe pas encore, mais il diverge si elle existe. Prenez l’habitude d’indiquer le chemin de destination complet pour éviter toute ambiguïté.

Ce que cp ne fait pas, et comment ne pas se tromper

La commande cp copie. Elle ne vérifie pas si l’espace disque disponible à la destination est suffisant avant de commencer. Elle ne signale pas une erreur d’espace insuffisant de manière proactive sur les très grands volumes.

Si vous copiez des centaines de gigaoctets, vérifiez l’espace disponible au préalable avec df -h /Volumes/VotreDisque/.

La commande cp ne gère pas non plus la reprise après interruption. Si la copie est interrompue (disque débranché, fermeture du Terminal), les fichiers déjà copiés restent en place, mais la copie est incomplète. Pour des transferts critiques ou très volumineux, préférez rsync, qui permet une reprise là où elle s’était arrêtée.

Pour la création de copies de sauvegarde Time Machine ou de clones de disque, les outils dédiés d’Apple (Time Machine, Carbon Copy Cloner, SuperDuper) restent plus adaptés car ils gèrent les attributs étendus, les ACL et les liens symboliques de manière exhaustive.

cp reste la solution idéale pour les copies ponctuelles, les scripts d’automatisation et les opérations où la simplicité et la rapidité d’exécution priment.

Ce que vous emportez avec vous

La commande cp est l’une des premières commandes qu’un utilisateur macOS rencontre dans le Terminal, et l’une des plus durables dans sa pratique quotidienne.

Sa syntaxe est prévisible : une source, une destination, des options selon le besoin. Elle s’intègre naturellement dans des scripts shell, des automatisations via launchd, ou des routines de sauvegarde personnalisées.

Trois points à retenir pour bien démarrer :

Utilisez toujours -r pour les dossiers. Oubliez cette option et cp vous retourne une erreur sans copier quoi que ce soit.

Ajoutez -i ou -n dès que la destination contient déjà des fichiers. Cela évite d’écraser accidentellement une version plus récente par une plus ancienne.

Testez vos chemins avec ls avant d’exécuter une copie importante. S’assurer que la source contient bien ce qu’on croit, et que la destination existe, prend dix secondes et évite des surprises.

La prochaine commande de cette série, mv, vous permettra d’aller un cran plus loin : déplacer et renommer vos fichiers depuis le Terminal, avec la même précision et la même efficacité.

Vous avez une question, une idée ou une remarque ? Je serai ravi de vous lire ! ✉️ henrido@hdrapin.com


En savoir plus sur Les miscellanées Numériques

Subscribe to get the latest posts sent to your email.

Laisser un commentaire

En savoir plus sur Les miscellanées Numériques

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture