Menu Fermer

La commande cp Linux : utilisation et exemples (copier des fichiers)

Copier des fichiers est l’une des tâches les plus courantes lors de la manipulation de fichiers sur tout système d’exploitation. Dans le terminal Linux, il s’agit également d’une tâche assez simple à faire et à cela, nous utilisons la commande CP.

CP signifie copie. Cette commande est utilisée pour copier des fichiers ou un groupe de fichiers ou de répertoires.
Il crée une image exacte d’un fichier sur un disque avec un nom de fichier différent.
La commande CP nécessite au moins deux noms de fichiers dans ses arguments.

Ce tutoriel vous explique comment utiliser la commande cp sur Linux en vous donnant tous les exemples pour une bonne compréhension.

La commande cp Linux : utilisations et exemples (copier des fichiers)

Comment utiliser la commande cp sur Linux

Voici la syntaxe de la commande cp :

cp [OPTIONS] SOURCE... DESTINATION

La source peut contenir un ou plusieurs fichiers ou répertoires comme arguments et l’argument de destination peut être un fichier ou un répertoire unique.

  • Lorsque les arguments de la source et de destination sont à la fois des fichiers, la commande cp copie le premier fichier à la seconde. Si le fichier n’existe pas, la commande le crée.
  • Lorsque la source comporte plusieurs fichiers ou répertoires comme arguments, l’argument de destination doit être un répertoire. Dans cette situation, les fichiers et les répertoires source sont déplacés dans le répertoire de destination.
  • Lorsque les arguments de source et de destination sont des deux répertoires, la commande cp copie le premier répertoire dans le second.

Voici les options de la commande cp :

OptionsDescription
-aConserver autant que possible de la structure et des attributs des fichiers d’origine dans la copie
-dCopier des liens symboliques sous forme de liaisons symboliques plutôt que de copier les fichiers qu’ils indiquent et préservent des liens durs entre les fichiers source des copies
-f or –forceCette option force la copie même si le dossier de destination n’est pas disponible pour l’écriture.
-i or –interactiveAfficher un message chaque fois qu’un fichier doit être écrasé.
-lFaites des liens difficiles au lieu de copies des non-répertoires.
-R or -r or –recursiveCopier des arborescence en récursif. Par défaut, ne suivez pas les liens symboliques dans la source.
-s or –symbolic-linkLa commande établira des liens symboliques de tous les fichiers qui ne sont pas des dossiers. Ceci remplace une copie.
-u or –updateCette option ne copie pas de fichiers qui possèdent une modification identique ou plus récente horodatage dans le dossier de destination. C’est une mise à jour d’une copie.
-v or –verboseImprimez le nom de chaque fichier avant de la copier.
Les options de la commande cp

Exemples et utilisations de la commande cp pour copier des fichiers sur Linux

Copier des fichiers avec commande cp

Dans ce premier exemple, on copie un fichier dans le même répertoire.
Par exemple pour dupliquer fichier en fichier_old :

cp fichier fichier_old

Ou encore cette syntaxe :

cp file{,old}

Pour copier un fichier vers un répertoire, il suffit de spécifier ce dernier en destination.
Par exemple pour copier fichier.txt vers le répertoire /sauvegarde :

cp fichier.txt /sauvegarde

Si vous souhaitez copier le fichier sous un nom différent, vous devez spécifier le nom de fichier souhaité. La commande ci-dessous copiera le fichier sur le répertoire spécifié comme fichier_sauv.txt.

cp fichier.txt /sauvegarde/fichier_sauv.txt

Par défaut, si le fichier de destination existe, il est écrasé. L’option -n indique à CP de ne pas écraser un fichier existant.
Pour forcer CP à demander à la confirmation, utilisez l’option -i.

cp -i fichier.txt fichier_sauv.txt

Enfin, la commande cp n’affiche aucune information, pour le rendre bavard et afficher les fichiers copier, utilisez l’option -v :

cp -v fichier.txt fichier_sauv.txt

Copier tous les fichiers d’un répertoire vers un autre répertoire

Il est également possible de copier tous les fichiers d’un dossier à un autre.
Pour ce faire, utilisez l’opérateur Asterisk (*).
Ce qui donne la syntaxe suivante :

cp * [destination]

Par exemple pour copier tous les fichiers du dossier courant vers le dossier /sauvegarde :

cp * /sauvegarde

Pour copier tous les fichiers texte du dossier courant vers le dossier /sauvegarde :

cp *.txt /sauvegarde
Copier tous les fichiers d'un répertoire vers un autre répertoire

On peut aussi spécifier un dossier en source pour copier tous les fichiers de dernier vers un autre emplacement.
Par exemple pour copier tous les fichiers .tar.gz du répertoire /ancienne_sauvegarde vers /sauvegarde

cp /ancienne_savegarde/*.tar.gz /sauvegarde

Pour copier les fichiers du répertoire parents, utilisez ../
Par exemple, ci-dessous on demande de copier les fichiers .txt du répertoire parent dans le répertoire courant désigné par le caractère point (.).

cp ../*txt .
Copier les fichiers du répertoire parents avec la commande cp
Dans ces exemples précédents, seuls les fichiers du répertoire sont copiées.
Les sous-dossiers et leurs contenus, soit donc l’arborescence complète n’est pas complet.
Il ne s’agit pas d’une copie récursive.

Copier des dossiers avec la commande cp

Pour copier un répertoire, y compris tous ses fichiers et sous-répertoires, utilisez l’option -R ou -R.

Par exemple pour copier le dossier Images vers Images_sauv.
La commande crée le répertoire de destination et copier récursivement tous les fichiers et les sous-répertoires de la source vers le répertoire de destination.

cp -R Images Images_sauv

Pour copier uniquement les fichiers et les sous-répertoires, mais pas le répertoire source, utilisez l’option -T :

cp -RT Images Images_sauv

Copier plusieurs fichiers et répertoires

Pour copier plusieurs fichiers et répertoires à la fois, spécifiez leurs noms en source et utilisez le répertoire de destination comme dernier argument:

cp fichier.txt nom_repertoire fichier2.txt /repertoire_destination
Copier plusieurs fichiers et répertoires

Demander de confirmation avant d’écraser un fichier

Par défaut, Linux écrase le fichier si l’existant dans le répertoire de destination.
Pour demander une confirmation avant d’écraser un fichier, utilisez l’option -i :

[email protected]:/tmp/superdossier$ ls -lh /home/debian/sauvegarde/
total 8.0K
-rw-r--r-- 1 debian debian 7.8K Aug 20 13:59 fichier.txt
[email protected]:/tmp/superdossier$ cp -v fichier.txt /home/debian/sauvegarde/
'fichier.txt' -> '/home/debian/sauvegarde/fichier.txt'
[email protected]:/tmp/superdossier$ cp -vi fichier.txt /home/debian/sauvegarde/
cp: overwrite '/home/debian/sauvegarde/fichier.txt'? y
'fichier.txt' -> '/home/debian/sauvegarde/fichier.txt'
Demander de confirmation avant d'écraser un fichier

Éviter d’écraser les fichiers avec la commande cp

Pour ne pas écraser les fichiers, si présents, dans le répertoire de destination, utilisez l’option -n.
Par exemple ci-dessous, on copie des fichiers puis je réutilise la commande cp avec l’option -n.
On voit bien qu’elle ne copie que le nouveau fichier et pas les anciens déjà présents dans dossier de destination.

cp -v employes.txt rose-tatoo.txt superdossier/all.tar.gz /home/debian/sauvegarde/
'employes.txt' -> '/home/debian/sauvegarde/employes.txt'
'rose-tatoo.txt' -> '/home/debian/sauvegarde/rose-tatoo.txt'
'superdossier/all.tar.gz' -> '/home/debian/sauvegarde/all.tar.gz'

[email protected]:/tmp$ cp -v -n employes.txt rose-tatoo.txt superdossier/all.tar.gz superdossier/fichier.txt /home/debian/sauvegarde/
'superdossier/fichier.txt' -> '/home/debian/sauvegarde/fichier.txt'
Éviter d'écraser les fichiers avec la commande cp

Faire des copies tout en maintenant des attributs de fichier et horodatage

Sur les systèmes basés sur Unix, les fichiers ont des attributs spécifiques. Donc, si un utilisateur autre que celui qui l’a créé des copies ou le déplace, il risque de modifier les valeurs de ces attributs. Certains de ces attributs sur les permissions et autorisations du fichiers, propriétés et dates du fichier.

Lors de la copie d’un fichier, le nouveau fichier appartient à l’utilisateur exécutant la commande. Utilisez l’option -p pour préserver le mode de fichier, le propriété et les horodatages.
Par exemple pour copier fichier.txt en fichier_sauv.txt en gardant l’attribut des fichiers :

cp -p fichier.txt fichier_sauv.txt

Mettre à jour les fichiers copiés avec la commande cp

Si vous souhaitez copier le fichier uniquement s’il est plus récent que la destination, appelez la commande avec l’option -u.
Dans cet exemple, je modifie fichier.txt en y ajoutant du texte, on voit que l’option -u ne copie que ce dernier car c’est le seul qui a été modifié depuis la dernière copie.

[email protected]:/tmp/superdossier$ cp * /home/debian/sauvegarde/
[email protected]:/tmp/superdossier$ echo "j'ajoute du texte" >> fichier.txt
[email protected]:/tmp/superdossier$ cp -v -u * /home/debian/sauvegarde/
'fichier.txt' -> '/home/debian/sauvegarde/fichier.txt'
[email protected]:/tmp/superdossier$
Mettre à jour les fichiers copiés avec la commande cp

Sauvegarder les fichiers à copier

C’est une option très utile. Lors de la copie de fichiers, il est courant que vous le modifiez au fil du temps, mais vous pouvez toujours garder une copie de l’original.
Dans ce cas, nous utilisons deux options simultanément.

  • La première est -a qui traite explicitement le fichier comme ce qu’il est, un fichier
  • Et le second option est -b pour effectuer la sauvegarde

Pour créer la sauvegarde, utilisez simplement la commande suivante :

cp -ab fichier.txt /home/angelo/Documents/example/

Automatiquement, Linux créé une copie du fichier dans le répertoire de destination qui se termine par le caractère ~.

Sauvegarder les fichiers à copier