Commande Linux cp : Copie de fichiers

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez explorer la puissante commande cp sous Linux, un outil essentiel pour la gestion des fichiers et des répertoires. Vous apprendrez à copier efficacement des fichiers et des répertoires, à comprendre diverses options pour personnaliser le processus de copie, et à appliquer ces compétences dans des scénarios pratiques. À la fin de ce laboratoire, vous serez à l'aise en utilisant la commande cp pour les tâches quotidiennes de gestion des fichiers et de sauvegarde.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicSystemCommandsGroup -.-> linux/tree("Directory Tree Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cp("File Copying") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/pwd("Directory Displaying") linux/FileandDirectoryManagementGroup -.-> linux/wildcard("Wildcard Character") subgraph Lab Skills linux/tree -.-> lab-209744{{"Commande Linux cp : Copie de fichiers"}} linux/ls -.-> lab-209744{{"Commande Linux cp : Copie de fichiers"}} linux/cp -.-> lab-209744{{"Commande Linux cp : Copie de fichiers"}} linux/cat -.-> lab-209744{{"Commande Linux cp : Copie de fichiers"}} linux/cd -.-> lab-209744{{"Commande Linux cp : Copie de fichiers"}} linux/pwd -.-> lab-209744{{"Commande Linux cp : Copie de fichiers"}} linux/wildcard -.-> lab-209744{{"Commande Linux cp : Copie de fichiers"}} end

Comprendre la commande de base cp

La commande cp est essentielle pour dupliquer des fichiers sous Linux. Commençons par un scénario simple où vous devez créer une sauvegarde d'un document important.

Dans votre répertoire de projet (~/project), il y a un fichier nommé important_report.txt. Votre tâche consiste à créer une sauvegarde de ce fichier dans le même répertoire.

Tout d'abord, vérifions le contenu de votre répertoire de projet :

ls ~/project

Vous devriez voir important_report.txt répertorié parmi les autres fichiers. Ne vous inquiétez pas si vous voyez des fichiers supplémentaires ; nous allons nous concentrer sur important_report.txt pour l'instant.

Maintenant, créons une sauvegarde :

cp ~/project/important_report.txt ~/project/important_report_backup.txt

Cette commande crée une copie de important_report.txt nommée important_report_backup.txt dans le même répertoire. Voici ce que signifie chaque partie de la commande :

  • cp : C'est la commande pour copier des fichiers.
  • ~/project/important_report.txt : C'est le fichier source que nous voulons copier. Le symbole ~ représente votre répertoire personnel.
  • ~/project/important_report_backup.txt : C'est le fichier de destination. Nous créons un nouveau fichier avec "_backup" ajouté au nom.

Pour vérifier que la copie a été créée avec succès, répertoriez à nouveau le contenu du répertoire :

ls ~/project

Vous devriez maintenant voir à la fois important_report.txt et important_report_backup.txt. Si vous ne voyez pas le nouveau fichier, vérifiez que vous avez correctement tapé la commande cp.

Copier des fichiers dans différents répertoires

Souvent, vous aurez besoin de copier des fichiers dans différents emplacements. Simulons un scénario où vous organisez votre collection de musique.

Tout d'abord, vérifions si le répertoire de musique existe :

ls ~/project

Vous devriez voir un répertoire nommé music répertorié. S'il n'est pas là, ne vous inquiétez pas ; il a été créé dans le script de configuration.

Maintenant, copions un fichier de musique de votre répertoire de projet dans le répertoire de musique :

cp ~/project/favorite_song.mp3 ~/project/music/

Cette commande copie favorite_song.mp3 de votre répertoire de projet dans le répertoire music. Décortiquons la commande :

  • cp : La commande de copie.
  • ~/project/favorite_song.mp3 : Le fichier source que nous copions.
  • ~/project/music/ : Le répertoire de destination. Remarquez le slash final (/) - cela indique à cp que music est un répertoire.

Pour vérifier que le fichier a été copié avec succès, répertoriez le contenu du répertoire de musique :

ls ~/project/music

Vous devriez voir favorite_song.mp3 répertorié. Si vous ne le voyez pas, assurez-vous d'avoir correctement tapé la commande cp et que favorite_song.mp3 existe dans votre répertoire de projet.

Copier plusieurs fichiers en une seule fois

Vous pouvez copier plusieurs fichiers en une seule commande, ce qui est utile pour les opérations par lots. Organisons votre collection de documents.

Tout d'abord, vérifions si le répertoire de documents existe :

ls ~/project

Vous devriez voir un répertoire nommé documents répertorié.

Maintenant, copions plusieurs fichiers texte dans ce répertoire de documents :

cp ~/project/report1.txt ~/project/report2.txt ~/project/notes.txt ~/project/documents/

Cette commande copie report1.txt, report2.txt et notes.txt dans le répertoire documents. Voici comment cela fonctionne :

  • cp : La commande de copie.
  • ~/project/report1.txt ~/project/report2.txt ~/project/notes.txt : Ce sont les fichiers sources que nous copions. Vous pouvez lister autant de fichiers que vous le souhaitez, séparés par des espaces.
  • ~/project/documents/ : C'est le répertoire de destination.

Vérifiez que les fichiers ont été copiés :

ls ~/project/documents

Vous devriez voir les trois fichiers (report1.txt, report2.txt et notes.txt) répertoriés. Si certains manquent, vérifiez la commande cp pour les fautes de frappe.

Utilisation de l'option -i pour une copie interactive

Lorsque vous copiez des fichiers, vous pourriez rencontrer des situations où la destination contient déjà un fichier portant le même nom. L'option -i rend la commande cp interactive, vous invitant à confirmer avant d'écraser les fichiers existants.

Simulons ce scénario :

Tout d'abord, regardons le contenu d'un fichier existant :

cat ~/project/test_file.txt

Astuce : Si vous n'êtes pas familier avec la commande cat, ne vous inquiétez pas ; elle sera expliquée en détail plus tard.

Vous devriez voir "Original content" s'afficher.

Maintenant, essayons de copier un fichier portant le même nom :

cp -i ~/project/new_test_file.txt ~/project/test_file.txt

Lorsque vous êtes invité, tapez y puis appuyez sur Entrée pour écraser le fichier. Si vous ne voulez pas l'écraser, tapez n puis appuyez sur Entrée.

L'option -i signifie "interactive" (interactif). Elle indique à cp de demander confirmation avant d'écraser tout fichier existant. C'est une mesure de sécurité pour éviter une perte de données accidentelle.

Maintenant, vérifiez le contenu du fichier :

cat ~/project/test_file.txt

Si vous avez choisi d'écraser le fichier, vous devriez voir "New content" s'afficher. Sinon, vous verrez toujours "Original content".

Copie récursive avec l'option -r

L'option -r vous permet de copier des répertoires et leur contenu de manière récursive. Cela est particulièrement utile pour sauvegarder des structures de répertoires entières.

Créons une sauvegarde de l'ensemble du répertoire du site web :

cp -r ~/project/website ~/project/website_backup

Cette commande copie le répertoire website et tout son contenu dans un nouveau répertoire appelé website_backup. Voici ce que signifie chaque partie :

  • cp : La commande de copie.
  • -r : Cette option signifie "récursif" (recursive). Elle indique à cp de copier les répertoires et leur contenu.
  • ~/project/website : C'est le répertoire source que nous copions.
  • ~/project/website_backup : C'est le nouveau répertoire dans lequel nous copions tout.

Vérifions que la sauvegarde a été créée avec succès :

ls -R ~/project/website_backup

Vous devriez voir l'ensemble de la structure de répertoires et les fichiers répertoriés. L'option -R avec ls affiche le contenu des répertoires de manière récursive.

Si vous ne voyez pas la structure attendue, assurez-vous d'avoir correctement tapé la commande cp -r.

Conservation des attributs de fichier avec l'option -p

Lorsque vous copiez des fichiers, vous pourriez vouloir conserver les attributs du fichier d'origine, tels que les horodatages (timestamps) et les autorisations (permissions). L'option -p vous permet de le faire.

Démontrons cela :

Tout d'abord, regardons les attributs du fichier d'origine :

ls -l ~/project/old_file.txt

Notez la date et l'heure affichées.

Maintenant, copions le fichier tout en conservant ses attributs :

cp -p ~/project/old_file.txt ~/project/preserved_file.txt

L'option -p signifie "preserve" (conservation). Elle conserve l'heure de modification, l'heure d'accès et les autorisations du fichier d'origine.

Comparons les attributs des deux fichiers :

ls -l ~/project/old_file.txt ~/project/preserved_file.txt

Vous devriez constater que les deux fichiers ont la même date et la même heure. S'ils diffèrent, assurez-vous d'avoir utilisé l'option -p avec cp.

Utilisation de caractères génériques pour une copie sélective

Les caractères génériques (wildcards) vous permettent de copier plusieurs fichiers en fonction de motifs. Cela est utile lorsque vous souhaitez copier des fichiers d'un certain type ou respectant des conventions de nommage spécifiques.

Copions tous les fichiers texte dans le répertoire text_files :

cp ~/project/*.txt ~/project/text_files/

Et copions tous les fichiers PDF dans le répertoire pdf_files :

cp ~/project/*.pdf ~/project/pdf_files/

Voici ce que signifie le caractère générique (*) :

  • *.txt correspond à tout fichier se terminant par ".txt"
  • *.pdf correspond à tout fichier se terminant par ".pdf"

Cela vous permet de copier plusieurs fichiers sans les lister individuellement.

Vérifions que les fichiers ont été copiés correctement :

ls ~/project/text_files
ls ~/project/pdf_files

Vous devriez voir tous les fichiers.txt dans le répertoire text_files et tous les fichiers.pdf dans le répertoire pdf_files.

Résumé

Dans ce laboratoire (lab), vous avez maîtrisé les utilisations essentielles de la commande Linux cp. Vous avez appris à :

  1. Copier des fichiers individuels
  2. Copier des fichiers dans différents répertoires
  3. Copier plusieurs fichiers en une seule fois
  4. Utiliser l'option -i pour une copie interactive
  5. Copier des répertoires de manière récursive avec l'option -r
  6. Conserver les attributs de fichier avec l'option -p
  7. Utiliser des caractères génériques (wildcards) pour une copie sélective

D'autres options de cp non couvertes dans ce laboratoire incluent :

  • -u : Copier uniquement lorsque le fichier source est plus récent que le fichier de destination ou lorsque le fichier de destination est manquant
  • -v : Mode verbeux (verbose), expliquant ce qui est en cours de réalisation
  • -n : Ne pas écraser ; ne pas écraser un fichier existant
  • -l : Créer des liens physiques (hard links) au lieu de copier des fichiers
  • -s : Créer des liens symboliques (symbolic links) au lieu de copier des fichiers

La commande cp est un outil puissant pour la gestion de fichiers sous Linux. Grâce à ces compétences, vous êtes désormais en mesure de gérer efficacement et de manière performante une large gamme de tâches de copie de fichiers.

Ressources