Comment utiliser efficacement la commande cp sous Linux [14 exemples]
Bref : Dans ce guide facile à suivre, nous aborderons quelques exemples pratiques de la commande cp. Après avoir suivi ce guide, les utilisateurs pourront copier facilement des fichiers et des répertoires sous Linux à l’aide de l’interface de ligne de commande. :
En tant qu’utilisateurs de Linux, nous interagissons avec les fichiers et les répertoires de temps en temps. Une opération courante effectuée par les utilisateurs est la copie de fichiers et de répertoires. Certes, nous pouvons utiliser un gestionnaire de fichiers graphique pour effectuer l’opération de copie. Cependant, la plupart des utilisateurs de Linux préfèrent utiliser la commande cp en raison de sa simplicité et de ses fonctionnalités riches.
Dans ce guide convivial pour les débutants, nous allons en apprendre davantage sur la commande cp. Comme son nom l’indique, la commande cp est utilisée pour copier des fichiers et des répertoires à un chemin donné.
Tout au long de ce guide, nous allons comprendre l’utilisation de la commande cp à l’aide d’exemples pratiques qui peuvent être utilisés au quotidien.
Alors commençons.
Syntaxe de la commande cp
La syntaxe de la commande cp est identique à celle des autres commandes Linux. À un niveau élevé, il est divisé en deux parties – les options et les arguments :
$ cp [OPTIONS] <SOURCE> <DEST>
cp [OPTIONS] <SOURCE-1> <SOURCE-2> ... <DIRECTORY>
Dans la syntaxe ci-dessus, les crochets ([]) représentent les arguments facultatifs tandis que les crochets angulaires (<>) représentent les arguments obligatoires.
1. Comment copier un fichier sous Linux
L’une des utilisations de base de la commande cp est de copier un fichier dans un répertoire courant. La plupart du temps, les utilisateurs effectuent cette opération pour effectuer une sauvegarde de la configuration importante.
Par exemple, nous créons souvent une copie de sauvegarde du fichier /etc/ssh/sshd_config avant de mettre à jour la configuration SSH.
Pour comprendre l’utilisation, créons un fichier simple :
$ touch file-1.txt
Ensuite, créez une copie du fichier à l’aide de la commande suivante :
$ cp file-1.txt file-2.txt
2. Afficher la progression de la commande de copie
Dans l’exemple précédent, nous avons utilisé la commande ls pour vérifier si l’opération de copie de fichier a réussi ou non. Cependant, cela n’a pas de sens d’utiliser une commande supplémentaire juste pour vérifier le résultat des commandes précédentes.
Dans ce cas, nous pouvons activer le mode détaillé à l’aide de l’option -v, qui fournit des diagnostics pour chaque fichier traité.
Faisons une copie du fichier file-1.txt à l’aide de la commande suivante :
$ cp -v file-1.txt file-3.txt
Dans la sortie ci-dessus, la flèche représente le fichier en cours de copie. L’argument de gauche est le fichier source, tandis que l’argument de droite est le fichier de destination.
3. Comment copier plusieurs fichiers dans le répertoire
Jusqu’à présent, nous avons travaillé avec un seul fichier et le répertoire de travail actuel uniquement. Cependant, dans l’environnement de production réel, nous devons travailler avec un grand nombre de fichiers. L’un des cas d’utilisation courants dans de tels environnements consiste à copier plusieurs fichiers dans un seul répertoire.
Évidemment, nous pouvons exécuter la commande cp plusieurs fois pour y parvenir, mais ce ne sera pas la façon la plus efficace. Pour effectuer une telle opération efficacement, nous pouvons utiliser une syntaxe alternative de la commande cp.
Alors, tout d’abord, créez un nouveau répertoire avec le nom dir-1 :
$ mkdir dir-1
Maintenant, copions les trois fichiers dans le répertoire dir-1 à l’aide de la commande unique :
$ cp -v file-1.txt file-2.txt file-3.txt dir-1
Le résultat ci-dessus montre que tous les fichiers ont été copiés dans le répertoire dir-1. De plus, il est important de noter que, pour utiliser cette syntaxe alternative, le répertoire doit être déjà présent et qu’il doit être le dernier argument de la commande.
4. Comment éviter d’écraser le fichier
Par défaut, la commande cp remplace le fichier de destination, ce qui signifie qu’elle écrasera le fichier s’il existe à la destination du même nom. Cependant, nous pouvons désactiver ce comportement par défaut à l’aide de l’option -n.
Pour comprendre cela, essayons d’écraser le fichier existant :
$ cp -n -v file-1.txt file-2.txt
Dans cet exemple, nous avons utilisé l’option -v pour montrer que le fichier file-2.txt n’a pas été écrasé.
5. Comment écraser le fichier avec confirmation
Dans l’exemple précédent, nous avons vu comment éviter l’écrasement du fichier de destination. Cependant, il arrive que nous souhaitions écraser la destination du fichier de manière plus sûre.
Dans ce cas, nous pouvons utiliser l’option -i de la commande pour rendre l’opération de copie interactive. Cette option affiche le message d’avertissement et attend la confirmation de l’utilisateur avant d’écraser le fichier.
Pour illustrer cela, essayons d’écraser le fichier existant :
$ cp -i file-1.txt file-2.txt
cp: overwrite 'file-2.txt'?
Comme nous pouvons le voir, la commande est en attente de confirmation. Tout comme les autres commandes Linux, nous pouvons utiliser 'y' pour continuer ou 'n' pour abandonner l'opération.
Ce comportement non interactif par défaut de la commande cp n’est pas très sûr. Il est possible que l’utilisateur écrase une configuration importante par erreur. Par conséquent, certaines distributions Linux appliquent le comportement interactif par défaut en utilisant la commande alias :
$ alias cp='cp -i'
6. Écraser le fichier uniquement si la source est plus récente
Dans l’exemple précédent, nous avons vu comment utiliser le mode interactif. Cependant, il arrive qu’un utilisateur écrase le fichier le plus récent par inadvertance.
Pour éviter de tels cas sources d’erreurs, nous pouvons utiliser l’option -u, qui ne tente l’opération de copie que si la source est plus récente que la destination ou si le fichier n’est pas présent à la destination.
Tout d’abord, mettez à jour l’horodatage du fichier source :
$ touch -t 10101010 file-1.txt
ls -l file-1.txt
Dans l’exemple ci-dessus, nous avons utilisé l’option -t de la commande touch pour définir l’horodatage du fichier à 10-Oct-2010.
Ensuite, mettons à jour l’horodatage du fichier de destination à l’heure actuelle :
$ touch file-2.txt
Maintenant, essayons d’effectuer l’opération de copie à l’aide de l’option -u :
$ cp -u -v file-1.txt file-2.txt
Ici, nous pouvons voir que l’opération de copie n’a pas été tentée car le fichier de destination est plus récent que la source.
Enfin, permutons les arguments source et destination et effectuons l’opération de copie :
$ cp -u -v file-2.txt file-1.txt
Dans la sortie ci-dessus, nous pouvons observer que l’opération de copie réussit parce que le fichier source est plus récent que la destination.
7. Comment sauvegarder un fichier avant de l’écraser
Nous pouvons demander à la commande cp de faire une sauvegarde du fichier de destination avant de l’écraser. Pour ce faire, nous pouvons utiliser l’option --backup, qui effectue des sauvegardes automatiques.
$ cp --backup=numbered -v file-1.txt file-2.txt
Dans cet exemple, nous avons utilisé la politique de sauvegarde numérotée. Cette stratégie utilise des nombres incrémentiels dans les noms de fichiers de sauvegarde.
Pour comprendre cela, exécutons la même commande plusieurs fois et observons le résultat :
$ cp --backup=numbered -v file-1.txt file-2.txt
cp --backup=numbered -v file-1.txt file-2.txt
cp --backup=numbered -v file-1.txt file-2.txt
8. Comment forcer la copie pour écraser le fichier
Dans les exemples précédents, nous avons vu comment écraser le fichier de manière plus sûre. Cependant, dans de rares cas, il est nécessaire d’écraser le fichier. Cependant, il n’y a aucune garantie que l’opération réussira à chaque fois.
Par exemple, l’opération de copie échoue si le fichier de destination ne dispose pas des autorisations d’écriture. Illustrons cela par un exemple.
Tout d’abord, modifiez les autorisations du fichier de destination :
$ chmod 444 file-2.txt
ls -l file-2.txt
Maintenant, essayons d’écraser le fichier file-2.txt :
$ cp file-1.txt file-2.txt
Dans la sortie ci-dessus, nous pouvons voir que la commande a échoué avec l’erreur d’autorisation refusée.
Pour surmonter cette limitation, nous pouvons utiliser l’option -f, qui supprime les fichiers de destination et tente l’opération de copie si le fichier de destination ne peut pas être ouvert.
Maintenant, utilisons l’option -f pour écraser le fichier de force :
$ cp -f -v file-1.txt file-2.txt
9. Comment supprimer le fichier de destination avant de le copier
Dans l’exemple précédent, nous avons vu comment supprimer le fichier de destination s’il y a une erreur lors de son utilisation. Cependant, il est parfois nécessaire de supprimer d’abord le fichier de destination, puis d’effectuer l’opération de copie.
Pour répondre à une telle exigence, nous pouvons utiliser l’option --remove-destination.
$ cp --remove-destination -v file-1.txt file-2.txt
Dans la sortie ci-dessus, nous pouvons voir que la commande cp supprime d’abord le fichier de destination, puis effectue l’opération de copie.
10. Comment créer un fichier de lien physique au lieu de le copier
Nous pouvons créer un lien physique au lieu de créer une nouvelle copie du fichier source. Cette option joue un rôle important en cas de pénurie d’espace disque.
Utilisons donc l’option -l pour créer un lien physique :
$ cp -l -v file-1.txt file-4.txt
Maintenant, vérifions les numéros d’inœud des deux fichiers pour vérifier les liens physiques :
$ ls -i1 file-1.txt file-4.txt
Dans la sortie ci-dessus, les nombres de la première colonne représentent les numéros d’inœuds.
11. Comment créer un fichier de lien logiciel au lieu de le copier
De la même manière, nous pouvons créer un lien logiciel au lieu de créer une nouvelle copie en utilisant l’option -s comme indiqué ci-dessous :
$ cp -s -v file-1.txt file-5.txt
Vérifions maintenant que le lien symbolique a été créé correctement :
$ ls -l file-5.txt
Dans la sortie ci-dessus, les dernières colonnes représentent la relation de lien symbolique.
12. Comment conserver les attributs du fichier lors de la copie
Différents attributs sont associés au fichier, tels que son temps d’accès, son temps de modification, ses autorisations, etc. Par défaut, ces attributs ne sont pas conservés lors de la copie du fichier. Pour remplacer ce comportement par défaut, nous pouvons utiliser l’option -p.
Pour comprendre cela, il faut d’abord mettre à jour l’horodatage de l’file-1.txt :
$ touch -t 10101010 file-1.txt
Maintenant, créons une copie de ce fichier en conservant tous ses attributs :
$ cp -p -v file-1.txt file-6.txt
Enfin, vérifiez l’horodatage du fichier file-6.txt :
$ ls -l file-6.txt
13. Comment effectuer une opération de copie récursive
Jusqu’à présent, nous avons vu comment copier un seul fichier. Cependant, nous devons souvent copier tous les fichiers et sous-répertoires du répertoire particulier.
Dans ce cas, nous pouvons utiliser le mode récursif en utilisant l’option -r ou -R.
Créons donc un répertoire et ajoutons quelques fichiers et sous-répertoires en dessous :
$ mkdir -p dir-1/dir-2
touch dir-1/file-1.txt dir-1/dir-2/file-2.txt
Ensuite, vérifiez que la structure de répertoires a été créée correctement :
$ tree dir-1
Maintenant, copions le répertoire dir-1 de manière récursive à l’aide de la commande suivante :
$ cp -r -v dir-1 dir-3
Enfin, vérifiez que tous les fichiers et sous-répertoires ont été copiés avec succès :
$ tree dir-3
14. Comment copier plusieurs répertoires
Semblable aux fichiers, nous pouvons copier plusieurs répertoires récursifs à l’aide d’une seule commande. Cependant, pour ce faire, le répertoire de destination doit être déjà présent et il doit être le dernier argument de la commande. Comprenons-le à l’aide d’un exemple.
Tout d’abord, créez un répertoire un nouveau répertoire :
$ mkdir dir-4
Maintenant, copions les répertoires dir-1 et dir-3 dans le répertoire dir-4 à l’aide de la commande ci-dessous :
$ cp -r -v dir-1 dir-3 dir-4
De la même manière, nous pouvons utiliser l’option -t de la commande pour obtenir le même résultat. Cette option nous permet de spécifier le répertoire de destination. Nous pouvons donc l’utiliser comme premier argument également :
$ cp -t dir-4 -r -v dir-1 dir-3
Dans cet article, nous avons vu comment copier des fichiers et des répertoires à l’aide de la commande cp. Les débutants peuvent se référer à ces exemples dans la vie quotidienne lorsqu’ils travaillent avec des systèmes Linux.
Connaissez-vous un autre meilleur exemple de la commande cp sous Linux ? Faites-nous part de votre point de vue dans les commentaires ci-dessous. :












