Si vous souhaitez tra­vail­ler avec la ligne de commande sous l’une des nom­breuses dis­tri­bu­tions open source basées sur Linux, vous devez connaître dif­fé­rentes commandes Linux. Celles-ci vous per­met­tent de naviguer dans les struc­tures de vos dossiers, de traiter vos données ou, comme c’est le cas ici, de copier des fichiers et des ré­per­toires. Avec la commande CP (abré­via­tion de « copie »), vous pouvez créer des copies de fichiers que vous sé­lec­tion­nez ou de dossiers entiers.

Nom de domaine
Votre domaine en un clic
  • 1 cer­ti­fi­cat SSL Wildcard par contrat
  • Fonction incluse Domain Connect pour une con­fi­gu­ra­tion DNS sim­pli­fiée

À quoi sert la commande CP sous Linux ?

La copie de fichiers et de dossiers fait partie des bases de tout système d’ex­ploi­ta­tion ; la plupart des uti­li­sa­teurs ef­fec­tuent d’ailleurs des copies tous les jours. Celles-ci vous per­met­tent de partager vos données avec d’autres personnes ou de les protéger en les sau­ve­gar­dant. Gé­né­ra­le­ment, cet outil est déjà installé et fait partie in­té­grante de chaque ins­tal­la­tion Linux, peu importe la dis­tri­bu­tion utilisée. La commande CP ap­par­tient au paquetage GNU Core Utilities (également abrégé « Coreutils »). Ce paquetage, que vous pouvez utiliser gra­tui­te­ment, contient tous les prin­ci­paux 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 em­pla­ce­ment spécifié par l’uti­li­sa­teur. À cet effet, deux in­for­ma­tions sont tout par­ti­cu­liè­re­ment es­sen­tielles : le nom de l’objet et l’objectif de l’opération. La syntaxe de la commande CP est donc établie en con­sé­quence :

cp [Original] [Destination]

Pour effectuer votre action, naviguez jusqu’au ré­per­toire du fichier à copier, puis entrez dans la commande le nom du fichier et le chemin sous lequel le nouveau fichier doit être en­re­gis­tré.

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 des­ti­na­tion. Si vous souhaitez copier plusieurs fichiers si­mul­ta­né­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é­ter­mi­ner le nom de votre fichier en le sai­sis­sant en tant que paramètre de des­ti­na­tion :

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

Si vous ne ren­seig­nez 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é­ci­fiques 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 ren­seig­ner les pa­ra­mètres suivants (également appelés « flags ») dans le champ afin d’étendre ou de sim­pli­fier votre travail de copie.

Paramètre Des­crip­tion Exemple
-a Copie le fichier de manière à ce qu’il conserve les mêmes droits et mé­ta­don­nées que le fichier d’origine. cp -a text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
--archive Copie le fichier de manière à ce qu’il conserve les mêmes droits et mé­ta­don­nées que le fichier d’origine. cp --archive text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
-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 dif­fé­rents. cp -b text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
--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 dif­fé­rents. cp --backup text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
--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 dif­fé­rents. cp --backup==numbered text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
--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 dif­fé­rents, et qu’il existe déjà d’autres sau­ve­gardes nu­mé­ro­tées. cp --backup==existing text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
-d Copie les liens sym­bo­liques. cp -d text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
-f Contraint à l’écra­se­ment lors de la copie. cp -f text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/text.txt
--force Contraint à l’écra­se­ment lors de la copie. cp --force text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/text.txt
-i Demande l’au­to­ri­sa­tion d’écraser tout fichier portant le même nom. cp -i text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
--in­te­rac­tive Demande l’au­to­ri­sa­tion d’écraser tout fichier portant le même nom. cp --in­te­rac­tive text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
-l Crée un lien physique plutôt qu’une copie. cp -l text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
--link Crée un lien physique plutôt qu’une copie. cp --link text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
-n N’écrase jamais les fichiers existants. cp -n text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
--no-cobbler N’écrase jamais les fichiers existants. cp –no-cobbler text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
-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’ho­ro­da­tage 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 sym­bo­liques sont en­re­gis­trés en tant que tels. cp -P text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
--no-de­re­fe­rence Les liens sym­bo­liques sont en­re­gis­trés en tant que tels. cp --no-de­re­fe­rence text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
-r Tous les ré­per­toires (y compris les sous-ré­per­toires) font l’objet d’une copie récursive. cp -r /home/uti­li­sa­teur/dos­sier­do­ri­gine/ /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
-R Tous les ré­per­toires (y compris les sous-ré­per­toires) sont copiés de manière ré­cur­rente. cp -R /home/uti­li­sa­teur/dos­sier­do­ri­gine/ /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
--recursive Tous les ré­per­toires (y compris les sous-ré­per­toires) sont copiés de manière ré­cur­rente. cp --recursive /home/uti­li­sa­teur/dos­sier­do­ri­gine/ /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
-s Crée un lien sym­bo­lique vers le fichier d’origine. cp -s text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
--symbolic-link Crée un lien sym­bo­lique vers le fichier d’origine. cp --symbolic-link text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
-S Écrase un suffixe de sau­ve­garde à l’aide de « --backup » lors de la copie. cp --backup=simple -S text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
--suffix=eigenes_suffix Remplace un suffixe de sau­ve­garde par un terme qui lui est propre à l’aide de « --backup » lors de la copie. cp --backup=simple –suffix=eigenes_suffix text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/
-u Réalise la copie uni­que­ment si le fichier cible est plus récent que le fichier d’origine. cp -u text.txt //home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/text.txt
--update Réalise la copie uni­que­ment si le fichier cible est plus récent que le fichier d’origine. cp --update text.txt /home/uti­li­sa­teur/dos­sier­de­des­ti­na­tion/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 dif­fé­rentes options entre elles. Il vous suffit de ren­seig­ner les pa­ra­mètres dans la première partie de la commande et de séparer ceux-ci par une espace.

Exemples pour l’uti­li­sa­tion 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 pa­ra­mètres entre eux pour traiter des tâches étendues. Les trois exemples qui suivent re­pré­sen­tent des scénarios d’ap­pli­ca­tion quo­ti­dienne typiques pour un uti­li­sa­teur de Linux.

Sau­ve­garde numérotée

Imaginez que vous tra­vail­lez sur un fichier et que vous souhaitez générer une sau­ve­garde de celui-ci de façon plus ou moins régulière. La création de fichiers in­di­vi­duels vous permet d’assurer le suivi des mo­di­fi­ca­tions et, éven­tuel­le­ment, de revenir à une version an­té­rieure. Pour profiter de ce paramètre, vous pouvez utiliser l’option de sau­ve­garde avancée.

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

La sau­ve­garde 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 nu­mé­ro­ta­tion apparaît dans leur nom. Grâce à l’option « verbose », vous recevez une no­ti­fi­ca­tion à 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 ca­rac­tères gé­né­riques

Imaginez que vous possédez un dossier contenant dif­fé­rents types de fichiers : vos images, documents et ap­pli­ca­tions y sont tous stockés pêle-mêle. Partez main­te­nant du principe que vous sou­hai­tiez copier toutes vos images dans un seul dossier. Au lieu de ren­seig­ner toutes vos images l’une après l’autre dans votre commande, vous pouvez utiliser l’as­té­risque (*), qui sert de caractère générique. Dans cet exemple, les noms complets des fichiers sont donc remplacés par un as­té­risque, et seules les ex­ten­sions de ces fichiers sont spé­ci­fiées.

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

Cette commande vous permet de copier tout fichier com­por­tant l’extension JPG ou PNG dans votre dossier d’images. Tous les fichiers en­re­gis­trés sous un autre format sont ignorés. Par ailleurs, les fichiers d’origine restent à leur place, car la commande CP sert uni­que­ment à copier les données, et non pas à les déplacer.

Copie de ré­per­toires

La copie récursive concerne un dossier et ses sous-dossiers. La structure du ré­per­toire fait donc également partie du lot. Cela ne fonc­tionne pas si vous utilisez la commande CP pour effectuer une simple copie : vous pouvez essayer de copier un dossier sans l’option cor­res­pon­dante, mais vous n’ob­tien­drez rien de plus qu’un message d’erreur. Pour éviter cela, dé­fi­nis­sez 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 sau­ve­garde 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é­per­toire « Original » dans le dossier de sau­ve­garde. Tous vos fichiers et sous-ré­per­toires y sont copiés. Si vous copiez d’im­por­tants volumes de données, cela peut prendre un certain temps. L’option « -u » vous permet de copier uni­que­ment les données modifiées.

Al­ter­na­tives à la commande CP de Linux

Malgré ses nom­breuses options, la commande CP ne peut vous être utile que de manière re­la­ti­ve­ment limitée. Si vous voulez réaliser une copie, puis supprimer le fichier d’origine, vous devez par exemple utiliser la commande MV (abré­via­tion de « move », qui signifie déplacer). Cette commande vous permet, en plus, de ren­seig­ner l’objet d’origine et le chemin cible.

La commande DD est également un peu plus so­phis­ti­quée que la commande CP. Celle-ci vous donne par ailleurs la pos­si­bi­lité 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 par­ti­cu­liè­re­ment indiquée si vous souhaitez copier des disques durs ou des par­ti­tions dans leur in­té­gra­lité.

La commande PYCP de Linux s’avère tout aussi in­té­res­sante. Avec celle-ci, vous profitez d’une barre de pro­gres­sion sous forme graphique pendant tout le processus de copie. Vous devez cependant tra­vail­ler avec Python 3.5 (ou toute version ul­té­rieure) pour pouvoir l’utiliser. Ce langage de pro­gram­ma­tion 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 trans­fé­rer des données d’un or­di­na­teur local à un autre, ou in­ver­se­ment. 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 ra­pi­de­ment et de façon re­la­ti­ve­ment simple. Grâce à ses nom­breuses options, vous pouvez également effectuer des tâches plus complexes. Si vous souhaitez réaliser ces tâches ré­gu­liè­re­ment, vous avez aussi la pos­si­bi­lité de placer votre commande dans des scripts shell. Par exemple, vous pouvez ainsi écrire vous-même un script de sau­ve­garde heb­do­ma­daire.

Il existe d’autres commandes que vous devez connaître pour une uti­li­sa­tion optimale du terminal Linux au quotidien. Découvrez par exemple le fonc­tion­ne­ment de ces commandes pour sim­pli­fier votre flux de travail :

Aller au menu principal