Commande Linux cp : Copie de fichiers

LinuxBeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous allez explorer la puissance de la commande cp sous Linux, un outil indispensable pour la gestion des fichiers et des répertoires. Vous apprendrez à copier efficacement des éléments, à comprendre les différentes options pour personnaliser le processus de copie et à appliquer ces compétences dans des scénarios concrets. À la fin de cet atelier, vous serez parfaitement à l'aise avec cp pour vos tâches quotidiennes de gestion de fichiers et de sauvegardes.

Comprendre la commande cp de base

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

Dans votre répertoire de projet (~/project), se trouve 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 dans la liste. Ne vous inquiétez pas si d'autres fichiers apparaissent ; nous nous concentrons sur important_report.txt pour le moment.

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 dossier. Voici la signification de 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 (home).
  • ~/project/important_report_backup.txt : C'est le fichier de destination. Nous créons un nouveau fichier en ajoutant "_backup" au nom.

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

ls ~/project

Vous devriez maintenant voir à la fois important_report.txt et important_report_backup.txt. Si le nouveau fichier n'apparaît pas, vérifiez que vous avez correctement saisi la commande cp.

Copier des fichiers vers différents répertoires

Souvent, vous aurez besoin de copier des fichiers vers d'autres 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. S'il n'est pas présent, ne vous inquiétez pas ; il a été créé lors de la configuration initiale.

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

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

Cette commande copie favorite_song.mp3 depuis votre dossier de projet vers le dossier music. Décomposons la commande :

  • cp : La commande de copie.
  • ~/project/favorite_song.mp3 : Le fichier source que nous copions.
  • ~/project/music/ : Le répertoire de destination. Notez la barre oblique finale (/) - elle indique à cp que music est un répertoire.

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

ls ~/project/music

Vous devriez voir favorite_song.mp3 affiché. Si ce n'est pas le cas, assurez-vous d'avoir bien tapé la commande et que le fichier source existe bien dans votre répertoire de projet.

Copier plusieurs fichiers simultanément

Vous pouvez copier plusieurs fichiers en une seule commande, ce qui est très pratique pour les opérations groupées. Organisons votre collection de documents.

D'abord, vérifions si le répertoire des documents existe :

ls ~/project

Vous devriez voir un répertoire nommé documents.

Maintenant, copions plusieurs fichiers texte vers ce répertoire :

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

Cette commande copie report1.txt, report2.txt et notes.txt vers 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. Vous pouvez lister autant de fichiers que nécessaire, 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 listés. Si l'un d'eux manque, vérifiez s'il y a des fautes de frappe dans votre commande.

Utiliser l'option -i pour une copie interactive

Lors de la copie de fichiers, il peut arriver que la destination contienne déjà un fichier portant le même nom. L'option -i rend cp interactif, vous demandant confirmation avant d'écraser des fichiers existants.

Simulons cette situation :

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 s'afficher "Original content".

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

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

Lorsque le système vous le demande, tapez y (pour yes) et appuyez sur Entrée pour écraser le fichier. Si vous ne voulez pas l'écraser, tapez n (pour no) et appuyez sur Entrée.

L'option -i signifie "interactive". Elle force cp à demander une confirmation avant de remplacer tout fichier existant. C'est une mesure de sécurité pour éviter la perte accidentelle de données.

Maintenant, vérifiez à nouveau le contenu du fichier :

cat ~/project/test_file.txt

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

Copie récursive avec l'option -r

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

Créons une sauvegarde de tout le répertoire du site web :

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

Cette commande copie le répertoire website et tout ce qu'il contient vers un nouveau répertoire appelé website_backup. Voici le détail :

  • cp : La commande de copie.
  • -r : Cette option signifie "recursive". Elle indique à cp de copier les répertoires et leur contenu.
  • ~/project/website : C'est le répertoire source.
  • ~/project/website_backup : C'est le nouveau répertoire où tout sera copié.

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

ls -R ~/project/website_backup

Vous devriez voir toute la structure des répertoires et les fichiers listés. L'option -R avec ls permet d'afficher le contenu des répertoires de façon récursive.

Si vous ne voyez pas la structure attendue, vérifiez la syntaxe de votre commande cp -r.

Préserver les attributs de fichiers avec l'option -p

Lors de la copie, vous souhaiterez peut-être conserver les attributs du fichier d'origine, tels que les horodatages (dates) et les permissions. L'option -p permet de le faire.

Démonstration :

D'abord, examinons les attributs du fichier original :

ls -l ~/project/old_file.txt

Notez la date et l'heure affichées.

Maintenant, copions le fichier tout en préservant ses attributs :

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

L'option -p signifie "preserve". Elle maintient l'heure de modification originale, l'heure d'accès et les droits d'accès.

Comparons les attributs des deux fichiers :

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

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

Utiliser des caractères génériques pour une copie sélective

Les caractères génériques (wildcards) permettent de copier plusieurs fichiers en fonction d'un modèle. C'est très utile pour copier des fichiers d'un certain type ou suivant une convention de nommage précise.

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

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

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

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

Voici la signification du caractère générique (*) :

  • *.txt correspond à n'importe quel fichier se terminant par ".txt"
  • *.pdf correspond à n'importe quel fichier se terminant par ".pdf"

Cela vous permet de copier une multitude de fichiers sans avoir à les nommer individuellement.

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

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

Vous devriez voir tous les fichiers .txt dans le dossier text_files et tous les fichiers .pdf dans le dossier pdf_files.

Résumé

Dans cet atelier, vous avez maîtrisé les utilisations essentielles de la commande Linux cp. Vous avez appris à :

  1. Copier des fichiers uniques
  2. Copier des fichiers vers différents répertoires
  3. Copier plusieurs fichiers en une seule fois
  4. Utiliser l'option -i pour une copie interactive sécurisée
  5. Copier récursivement des répertoires avec l'option -r
  6. Préserver les attributs des fichiers avec l'option -p
  7. Utiliser des caractères génériques pour des copies sélectives

D'autres options de cp non abordées ici incluent :

  • -u : Copie uniquement si le fichier source est plus récent que le fichier de destination ou si ce dernier est absent.
  • -v : Mode verbeux, expliquant chaque action effectuée.
  • -n : Ne pas écraser un fichier existant.
  • -l : Créer des liens physiques (hard links) au lieu de copier les fichiers.
  • -s : Créer des liens symboliques au lieu de copier les fichiers.

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

Ressources complémentaires