Copie de fichiers sous Linux

LinuxBeginner
Pratiquer maintenant

Introduction

Le système de fichiers Linux fournit des outils puissants pour gérer vos fichiers et répertoires. L'une des commandes les plus essentielles que vous utiliserez régulièrement est la commande cp, qui vous permet de copier des fichiers et des répertoires d'un emplacement à un autre.

Dans ce labo, vous apprendrez à utiliser la commande cp pour copier des fichiers individuels et plusieurs fichiers à la fois. Cette compétence fondamentale est cruciale pour sauvegarder des données, organiser votre système de fichiers et gérer efficacement votre environnement Linux.

À la fin de ce labo, vous serez en mesure d'utiliser en toute confiance la commande cp avec diverses options pour répondre à vos besoins en matière de copie de fichiers.

Création de répertoires et de fichiers

Avant de pouvoir nous entraîner à copier des fichiers, nous devons créer des répertoires et des fichiers avec lesquels travailler. Dans cette étape, vous allez créer une structure de répertoires et quelques exemples de fichiers.

Tout d'abord, naviguez vers le répertoire du projet où vous travaillerez :

cd ~/project

Maintenant, créons un répertoire appelé data-files qui contiendra nos exemples de fichiers :

mkdir data-files

Vous ne devriez voir aucune sortie après avoir exécuté cette commande, ce qui est normal pour de nombreuses commandes Linux lorsqu'elles s'exécutent avec succès.

Ensuite, naviguons dans ce nouveau répertoire :

cd data-files

Maintenant, créons trois fichiers texte vides que nous utiliserons pour nos exercices de copie :

touch apple.txt orange.txt grape.txt

La commande touch crée des fichiers vides s'ils n'existent pas, ou met à jour l'heure de modification s'ils existent déjà.

Vérifions que nos fichiers ont été créés correctement en listant le contenu du répertoire courant :

ls -l

Vous devriez voir une sortie similaire à ceci :

total 0
-rw-r--r-- 1 labex labex 0 [date] apple.txt
-rw-r--r-- 1 labex labex 0 [date] grape.txt
-rw-r--r-- 1 labex labex 0 [date] orange.txt

La sortie montre que nous avons créé avec succès trois fichiers vides (la taille du fichier est de 0 octet).

À ce stade, votre structure de répertoires ressemble à ceci :

~/project/
└── data-files/
    ├── apple.txt
    ├── orange.txt
    └── grape.txt

Nous travaillerons avec ces fichiers dans les étapes suivantes, et vous apprendrez à les copier vers différents emplacements.

Copie d'un seul fichier

Dans cette étape, vous apprendrez à copier un seul fichier d'un emplacement à un autre à l'aide de la commande cp.

La syntaxe de base de la commande cp est la suivante :

cp [options] fichier_source destination

Où :

  • fichier_source est le fichier que vous souhaitez copier
  • destination est l'endroit où vous souhaitez copier le fichier (peut être un répertoire ou un nouveau nom de fichier)

Nous sommes actuellement dans le répertoire data-files. Ajoutons du contenu à notre fichier apple.txt afin de pouvoir vérifier que le contenu est copié correctement :

echo "This is sample content for the apple file." > apple.txt

Le symbole > redirige la sortie de la commande echo vers le fichier, en écrasant tout contenu existant.

Maintenant, copions le fichier apple.txt dans le répertoire parent (qui est ~/project) avec un nouveau nom :

cp apple.txt ../apple_copy.txt

Décomposons cette commande :

  • cp est la commande de copie
  • apple.txt est le fichier source que nous voulons copier
  • ../apple_copy.txt spécifie que nous voulons copier dans le répertoire parent (..) avec le nouveau nom de fichier apple_copy.txt

Vérifions que le fichier a été copié correctement en vérifiant son contenu :

cat ../apple_copy.txt

Vous devriez voir la sortie suivante :

This is sample content for the apple file.

Cela confirme que notre fichier a été copié avec succès avec son contenu intact.

Après cette opération, votre structure de répertoires ressemble maintenant à ceci :

~/project/
├── data-files/
│   ├── apple.txt
│   ├── orange.txt
│   └── grape.txt
└── apple_copy.txt

Copie de plusieurs fichiers simultanément

Dans cette étape, vous apprendrez à copier plusieurs fichiers à la fois vers un nouveau répertoire. Ceci est particulièrement utile lorsque vous devez sauvegarder ou organiser plusieurs fichiers simultanément.

Tout d'abord, revenons au répertoire du projet (puisque nous sommes actuellement dans le répertoire data-files) :

cd ~/project

Maintenant, créons un nouveau répertoire appelé backup où nous allons copier nos fichiers :

mkdir backup

Avant de copier les fichiers, ajoutons du contenu aux fichiers texte restants afin de mieux vérifier le processus de copie :

echo "This is sample content for the orange file." > data-files/orange.txt
echo "This is sample content for the grape file." > data-files/grape.txt

Maintenant, copions tous les fichiers texte du répertoire data-files vers le répertoire backup en utilisant un caractère générique (wildcard) :

cp data-files/*.txt backup/

Dans cette commande :

  • cp est la commande de copie
  • data-files/*.txt utilise le caractère générique * pour correspondre à tous les fichiers avec l'extension .txt dans le répertoire data-files
  • backup/ est le répertoire de destination où nous voulons copier les fichiers

Vérifions que tous les fichiers ont été copiés correctement en listant le contenu du répertoire backup :

ls -l backup/

Vous devriez voir une sortie similaire à ceci :

total 12
-rw-r--r-- 1 labex labex 41 [date] apple.txt
-rw-r--r-- 1 labex labex 41 [date] grape.txt
-rw-r--r-- 1 labex labex 42 [date] orange.txt

Vérifions également le contenu de l'un des fichiers copiés pour nous assurer que les données ont été copiées correctement :

cat backup/orange.txt

Vous devriez voir :

This is sample content for the orange file.

Cela confirme que tous nos fichiers ont été copiés avec succès dans le répertoire backup avec leur contenu intact.

Après cette opération, votre structure de répertoires ressemble maintenant à ceci :

~/project/
├── data-files/
│   ├── apple.txt
│   ├── orange.txt
│   └── grape.txt
├── backup/
│   ├── apple.txt
│   ├── orange.txt
│   └── grape.txt
└── apple_copy.txt

Options avancées de copie de fichiers

Dans cette étape, vous découvrirez quelques options utiles de la commande cp qui peuvent rendre vos tâches de copie de fichiers plus efficaces.

Commençons par revenir au répertoire du projet :

cd ~/project

Préserver les attributs de fichier avec -p

Lorsque vous copiez des fichiers, vous pouvez souhaiter conserver les attributs d'origine du fichier, tels que les horodatages (timestamps), la propriété (ownership) et les permissions. L'option -p vous permet de le faire :

cp -p data-files/apple.txt backup/apple_preserved.txt

Comparons le fichier d'origine et la copie préservée :

ls -l data-files/apple.txt backup/apple.txt backup/apple_preserved.txt

Vous remarquerez que backup/apple_preserved.txt a le même horodatage que le fichier d'origine, tandis que backup/apple.txt (que nous avons copié précédemment sans l'option -p) a un horodatage plus récent.

Créer des copies récursives avec -r

Pour copier des répertoires avec leur contenu, vous devez utiliser l'option -r (récursive). Créons une structure de répertoires imbriquée pour illustrer cela :

mkdir -p data-files/nested/deep
echo "This is a nested file." > data-files/nested/nested_file.txt
echo "This is a deep nested file." > data-files/nested/deep/deep_file.txt

Maintenant, copions l'ensemble du répertoire data-files et son contenu vers un nouvel emplacement :

cp -r data-files data-files-backup

Vérifions que la structure de répertoires et les fichiers ont été copiés correctement :

find data-files-backup -type f | sort

Vous devriez voir une sortie listant tous les fichiers dans la structure de répertoires copiée :

data-files-backup/apple.txt
data-files-backup/grape.txt
data-files-backup/nested/deep/deep_file.txt
data-files-backup/nested/nested_file.txt
data-files-backup/orange.txt

Mode interactif avec -i

Lors de la copie de fichiers, vous pouvez accidentellement écraser des fichiers existants. L'option -i (interactive) vous invite à confirmer avant d'écraser un fichier :

cp -i data-files/apple.txt backup/apple.txt

Étant donné que backup/apple.txt existe déjà, vous verrez une invite vous demandant si vous souhaitez l'écraser :

cp: overwrite 'backup/apple.txt'?

Vous pouvez répondre par y pour écraser ou n pour annuler.

Ces options avancées rendent la commande cp encore plus puissante et flexible pour vos besoins de gestion de fichiers.

Résumé

Dans ce TP (travaux pratiques), vous avez appris à utiliser la commande cp de Linux pour copier efficacement des fichiers et des répertoires. Vous avez commencé par les bases de la création de répertoires et de fichiers, puis vous avez progressé vers la copie de fichiers individuels et de plusieurs fichiers à la fois.

Concepts clés abordés :

  1. Copie de fichiers de base : Utilisation de la commande cp pour copier un seul fichier d'un emplacement à un autre.

    cp source_file destination
    
  2. Copie de plusieurs fichiers : Utilisation de caractères génériques (wildcards) pour copier plusieurs fichiers en une seule commande.

    cp source_directory/*.txt destination_directory/
    
  3. Options avancées :

    • -p : Conservation des attributs de fichier (horodatages, permissions, etc.)
    • -r : Copie récursive des répertoires et de leur contenu
    • -i : Mode interactif pour éviter les écrasements accidentels

Ces compétences en matière de copie de fichiers sont fondamentales pour une gestion efficace des fichiers sous Linux. Que vous sauvegardiez des fichiers importants, organisiez vos répertoires ou déployiez des applications, la commande cp sera un outil essentiel dans votre boîte à outils Linux.

N'oubliez pas que la ligne de commande Linux offre de nombreux outils puissants pour la manipulation de fichiers, et la commande cp n'en est qu'un parmi d'autres. Au fur et à mesure que vous poursuivrez votre parcours Linux, vous découvrirez comment ces outils peuvent être combinés pour effectuer efficacement des opérations complexes sur les fichiers.