Commande CP sous Linux : voici comment l’utiliser

Si vous souhaitez travailler avec la ligne de commande sous l’une des nombreuses distributions open source basées sur Linux, vous devez connaître différentes commandes Linux. Celles-ci vous permettent de naviguer dans les structures de vos dossiers, de traiter vos données ou, comme c’est le cas ici, de copier des fichiers et des répertoires. Avec la commande CP (abréviation de « copie »), vous pouvez créer des copies de fichiers que vous sélectionnez ou de dossiers entiers.

Domaine Internet pas cher

Bien plus qu'un simple domaine !

Personnalisez votre présence en ligne avec un nom de domaine pertinent.

Email
Certificat SSL
Assistance 24/7

À quoi sert la commande CP sous Linux ?

La copie de fichiers et de dossiers fait partie des bases de tout système d’exploitation ; la plupart des utilisateurs effectuent d’ailleurs des copies tous les jours. Celles-ci vous permettent de partager vos données avec d’autres personnes ou de les protéger en les sauvegardant. Généralement, cet outil est déjà installé et fait partie intégrante de chaque installation Linux, peu importe la distribution utilisée. La commande CP appartient au paquetage GNU Core Utilities (également abrégé « Coreutils »). Ce paquetage, que vous pouvez utiliser gratuitement, contient tous les principaux outils.

Syntaxe de la commande CP de Linux

La fonction première de la commande CP est très simple : elle permet de copier un ou plusieurs fichiers vers un emplacement spécifié par l’utilisateur. À cet effet, deux informations sont tout particulièrement essentielles : le nom de l’objet et l’objectif de l’opération. La syntaxe de la commande CP est donc établie en conséquence :

cp [Original] [Destination]

Pour effectuer votre action, naviguez jusqu’au répertoire du fichier à copier, puis entrez dans la commande le nom du fichier et le chemin sous lequel le nouveau fichier doit être enregistré.

cp text.txt /home/utilisateur/dossierdedestination/

Pour cet exemple, nous avons choisi de créer un nouveau fichier portant le même nom que le fichier d’origine dans le dossier de destination. Si vous souhaitez copier plusieurs fichiers simultanément, vous devez les lister l’un après l’autre sur une même ligne de commande.

cp text1.txt text2.txt text3.txt /home/ utilisateur/dossierdedestination/

Dans les exemples précédents, la copie portait toujours le même nom que le fichier d’origine. Vous êtes libre de déterminer le nom de votre fichier en le saisissant en tant que paramètre de destination :

cp text.txt /home/ utilisateur/dossierdedestination/copie_texte.txt

Si vous ne renseignez pas le chemin du dossier cible, votre copie sera générée dans le même dossier que le fichier d’origine, mais avec un nouveau nom de fichier.

cp text1.txt text2.txt

Fonctions spécifiques de la commande CP

La commande CP de Linux peut aussi prendre en charge d’autres tâches. Pour ce faire, vous pouvez utiliser le champ d’options suivant :

cp [Option(s)] [Original(aux)] [destination]

Vous pouvez renseigner les paramètres suivants (également appelés « flags ») dans le champ afin d’étendre ou de simplifier votre travail de copie.

Paramètre Description Exemple
-a Copie le fichier de manière à ce qu’il conserve les mêmes droits et métadonnées que le fichier d’origine. cp -a text.txt /home/utilisateur/dossierdedestination/
--archive Copie le fichier de manière à ce qu’il conserve les mêmes droits et métadonnées que le fichier d’origine. cp --archive text.txt /home/utilisateur/dossierdedestination/
-b Génère une copie dans la mémoire tampon si le fichier d’origine et le fichier cible possèdent le même nom, mais des contenus différents. cp -b text.txt /home/utilisateur/dossierdedestination/
--backup Génère une copie dans la mémoire tampon si le fichier d’origine et le fichier cible possèdent le même nom, mais des contenus différents. cp --backup text.txt /home/utilisateur/dossierdedestination/
--backup=numbered Crée un nouveau fichier numéroté si le fichier d’origine et le fichier cible possèdent le même nom, mais des contenus différents. cp --backup==numbered text.txt /home/utilisateur/dossierdedestination/
--backup=existing Crée un nouveau fichier numéroté si le fichier d’origine et le fichier cible possèdent le même nom, mais des contenus différents, et qu’il existe déjà d’autres sauvegardes numérotées. cp --backup==existing text.txt /home/utilisateur/dossierdedestination/
-d Copie les liens symboliques. cp -d text.txt /home/utilisateur/dossierdedestination/
-f Contraint à l’écrasement lors de la copie. cp -f text.txt /home/utilisateur/dossierdedestination/text.txt
--force Contraint à l’écrasement lors de la copie. cp --force text.txt /home/utilisateur/dossierdedestination/text.txt
-i Demande l’autorisation d’écraser tout fichier portant le même nom. cp -i text.txt /home/utilisateur/dossierdedestination/
--interactive Demande l’autorisation d’écraser tout fichier portant le même nom. cp --interactive text.txt /home/utilisateur/dossierdedestination/
-l Crée un lien physique plutôt qu’une copie. cp -l text.txt /home/utilisateur/dossierdedestination/
--link Crée un lien physique plutôt qu’une copie. cp --link text.txt /home/utilisateur/dossierdedestination/
-n N’écrase jamais les fichiers existants. cp -n text.txt /home/utilisateur/dossierdedestination/
--no-cobbler N’écrase jamais les fichiers existants. cp –no-cobbler text.txt /home/utilisateur/dossierdedestination/
-p Les attributs du fichier d’origine sont transmis au fichier cible lors de la copie. cp -p text.txt text1.txt
--preserve Les attributs du fichier d’origine sont transmis au fichier cible lors de la copie. cp --preserve text.txt text1.txt
--preserve=mode Le mode du fichier d’origine est transmis au fichier cible lors de la copie. cp --preserve==mode text.txt text1.txt
--preserve=ownership Les droits de propriété du fichier d’origine sont transmis au fichier cible lors de la copie. cp --preserve==ownership text.txt text1.txt
--preserve=timestamp L’horodatage du fichier d’origine est transmis au fichier cible lors de la copie. cp --preserve==timestamp text.txt text1.txt
--preserve=links Les liens du fichier d’origine sont transmis au fichier cible lors de la copie. cp --preserve==links text.txt text1.txt
--preserve=context Le contexte de sécurité du fichier d’origine est transmis au fichier cible lors de la copie. cp --preserve==context text.txt text1.txt
--preserve=xattr Les attributs étendus du fichier d’origine sont transmis au fichier cible lors de la copie. cp --preserve==xattr text.txt text1.txt
--preserve=all Tous les attributs du fichier d’origine sont transmis au fichier cible lors de la copie. cp --preserve==all text.txt text1.txt
-P Les liens symboliques sont enregistrés en tant que tels. cp -P text.txt /home/utilisateur/dossierdedestination/
--no-dereference Les liens symboliques sont enregistrés en tant que tels. cp --no-dereference text.txt /home/utilisateur/dossierdedestination/
-r Tous les répertoires (y compris les sous-répertoires) font l’objet d’une copie récursive. cp -r /home/utilisateur/dossierdorigine/ /home/utilisateur/dossierdedestination/
-R Tous les répertoires (y compris les sous-répertoires) sont copiés de manière récurrente. cp -R /home/utilisateur/dossierdorigine/ /home/utilisateur/dossierdedestination/
--recursive Tous les répertoires (y compris les sous-répertoires) sont copiés de manière récurrente. cp --recursive /home/utilisateur/dossierdorigine/ /home/utilisateur/dossierdedestination/
-s Crée un lien symbolique vers le fichier d’origine. cp -s text.txt /home/utilisateur/dossierdedestination/
--symbolic-link Crée un lien symbolique vers le fichier d’origine. cp --symbolic-link text.txt /home/utilisateur/dossierdedestination/
-S Écrase un suffixe de sauvegarde à l’aide de « --backup » lors de la copie. cp --backup=simple -S text.txt /home/utilisateur/dossierdedestination/
--suffix=eigenes_suffix Remplace un suffixe de sauvegarde par un terme qui lui est propre à l’aide de « --backup » lors de la copie. cp --backup=simple –suffix=eigenes_suffix text.txt /home/utilisateur/dossierdedestination/
-u Réalise la copie uniquement si le fichier cible est plus récent que le fichier d’origine. cp -u text.txt //home/utilisateur/dossierdedestination/text.txt
--update Réalise la copie uniquement si le fichier cible est plus récent que le fichier d’origine. cp --update text.txt /home/utilisateur/dossierdedestination/text.txt
-v Affiche un message une fois le processus de copie terminé. cp -v text.txt text1.txt
--verbose Affiche un message une fois le processus de copie terminé. cp --verbose text.txt text1.txt
Conseil

Il est aussi possible de combiner différentes options entre elles. Il vous suffit de renseigner les paramètres dans la première partie de la commande et de séparer ceux-ci par une espace.

Exemples pour l’utilisation de la commande CP

Les options multiples associées à cette commande de copie montrent bien que sous Linux, la commande CP peut servir à bien plus qu’à la simple copie de fichiers et de dossiers. Vous pouvez combiner plusieurs paramètres entre eux pour traiter des tâches étendues. Les trois exemples qui suivent représentent des scénarios d’application quotidienne typiques pour un utilisateur de Linux.

Sauvegarde numérotée

Imaginez que vous travaillez sur un fichier et que vous souhaitez générer une sauvegarde de celui-ci de façon plus ou moins régulière. La création de fichiers individuels vous permet d’assurer le suivi des modifications et, éventuellement, de revenir à une version antérieure. Pour profiter de ce paramètre, vous pouvez utiliser l’option de sauvegarde avancée.

cp -f -v --backup=numbered text.txt text.txt

La sauvegarde créée ici possède le même nom de fichier, et se trouve également dans le même dossier. Pour y parvenir, vous devez utiliser l’option « force ». Étant donné que l’option « numbered » est elle aussi activée, de nouveaux fichiers sont créés les uns à la suite des autres, et leur numérotation apparaît dans leur nom. Grâce à l’option « verbose », vous recevez une notification à la fin de chaque processus de copie.

Dans la console, le code ressemble à ce qui suit :

~$ cp -v -f --backup=numbered text.txt text.txt
’text.txt’ -> ’text.txt.~1~’
~$ cp -v -f --backup=numbered text.txt text.txt
’text.txt’ -> ’text.txt.~2~’
~$ cp -v -f --backup=numbered text.txt text.txt
’text.txt’ -> ’text.txt.~3~’
~$ ls
text.txt  text.txt.~1~  text.txt.~2~  text.txt.~3~
Conseil

Sous Linux, vous pouvez utiliser la commande ls pour afficher la liste des fichiers et des sous-dossiers présents dans votre dossier.

Tri des fichiers à l’aide de caractères génériques

Imaginez que vous possédez un dossier contenant différents types de fichiers : vos images, documents et applications y sont tous stockés pêle-mêle. Partez maintenant du principe que vous souhaitiez copier toutes vos images dans un seul dossier. Au lieu de renseigner toutes vos images l’une après l’autre dans votre commande, vous pouvez utiliser l’astérisque (*), qui sert de caractère générique. Dans cet exemple, les noms complets des fichiers sont donc remplacés par un astérisque, et seules les extensions de ces fichiers sont spécifiées.

cp *.jpg *.png /home/benutzer/Bilder

Cette commande vous permet de copier tout fichier comportant l’extension JPG ou PNG dans votre dossier d’images. Tous les fichiers enregistrés sous un autre format sont ignorés. Par ailleurs, les fichiers d’origine restent à leur place, car la commande CP sert uniquement à copier les données, et non pas à les déplacer.

Copie de répertoires

La copie récursive concerne un dossier et ses sous-dossiers. La structure du répertoire fait donc également partie du lot. Cela ne fonctionne pas si vous utilisez la commande CP pour effectuer une simple copie : vous pouvez essayer de copier un dossier sans l’option correspondante, mais vous n’obtiendrez rien de plus qu’un message d’erreur. Pour éviter cela, définissez le paramètre « -r » (ou encore « --recursive » ou « -R »).

Pour cet exemple, imaginez que vous souhaitez effectuer de façon régulière une copie de sauvegarde d’un dossier, avec tout son contenu et ses sous-dossiers. Vous pouvez aussi utiliser la fonction « update » pour ne pas avoir à tout copier à chaque fois.

cp -r -u /home/utilisateur/Original/ /home/utilisateur/Backups/

Lorsque vous exécutez la commande pour la première fois, cela a pour effet de créer le répertoire « Original » dans le dossier de sauvegarde. Tous vos fichiers et sous-répertoires y sont copiés. Si vous copiez d’importants volumes de données, cela peut prendre un certain temps. L’option « -u » vous permet de copier uniquement les données modifiées.

Alternatives à la commande CP de Linux

Malgré ses nombreuses options, la commande CP ne peut vous être utile que de manière relativement limitée. Si vous voulez réaliser une copie, puis supprimer le fichier d’origine, vous devez par exemple utiliser la commande MV (abréviation de « move », qui signifie déplacer). Cette commande vous permet, en plus, de renseigner l’objet d’origine et le chemin cible.

La commande DD est également un peu plus sophistiquée que la commande CP. Celle-ci vous donne par ailleurs la possibilité de modifier le format de vos données lors du processus de copie. Pour ce faire, le processus s’exécute bit par bit. Par exemple, cette commande est tout particulièrement indiquée si vous souhaitez copier des disques durs ou des partitions dans leur intégralité.

La commande PYCP de Linux s’avère tout aussi intéressante. Avec celle-ci, vous profitez d’une barre de progression sous forme graphique pendant tout le processus de copie. Vous devez cependant travailler avec Python 3.5 (ou toute version ultérieure) pour pouvoir l’utiliser. Ce langage de programmation est déjà installé par défaut pour toutes les versions les plus récentes d’Ubuntu.

La commande SCP de Linux peut aussi vous être utile. « Secure Copy » vous permet de transférer des données d’un ordinateur local à un autre, ou inversement. Ce transfert s’effectue par SSH ; il s’agit donc d’un processus crypté.

En résumé

La commande CP de Linux permet de copier des fichiers et des dossiers rapidement et de façon relativement simple. Grâce à ses nombreuses options, vous pouvez également effectuer des tâches plus complexes. Si vous souhaitez réaliser ces tâches régulièrement, vous avez aussi la possibilité de placer votre commande dans des scripts shell. Par exemple, vous pouvez ainsi écrire vous-même un script de sauvegarde hebdomadaire.

Il existe d’autres commandes que vous devez connaître pour une utilisation optimale du terminal Linux au quotidien. Découvrez par exemple le fonctionnement de ces commandes pour simplifier votre flux de travail :