Empaquetage et compression 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 (lab), nous allons apprendre à empaqueter et compresser des fichiers et des répertoires à l'aide de commandes Linux courantes telles que tar, gzip et zip. Ces outils sont essentiels pour la gestion des fichiers et des répertoires sur les systèmes Linux, car ils vous permettent de stocker et de transférer des données de manière efficace. Nous commencerons par des opérations de base et passerons progressivement à des tâches plus complexes, en expliquant chaque étape en détail.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 95%. Il a reçu un taux d'avis positifs de 99% de la part des apprenants.

Création d'une structure de répertoires d'exemple

Commençons par créer une structure de répertoires d'exemple avec laquelle travailler. Cela nous aidera à comprendre comment le regroupement et la compression de fichiers fonctionnent avec différents types de fichiers et de répertoires.

Ouvrez votre terminal et entrez les commandes suivantes :

cd ~/project
mkdir -p test_dir/{subdir1,subdir2}
echo "This is file 1" > test_dir/file1.txt
echo "This is file 2" > test_dir/file2.txt
echo "This is in subdir1" > test_dir/subdir1/subfile1.txt
echo "This is in subdir2" > test_dir/subdir2/subfile2.txt

Analysons ce que font ces commandes :

  1. cd ~/project : Cette commande change votre répertoire actuel pour le dossier project dans votre répertoire personnel.
  2. mkdir -p test_dir/{subdir1,subdir2} : Cette commande crée un nouveau répertoire appelé test_dir et deux sous-répertoires à l'intérieur : subdir1 et subdir2. L'option -p permet à mkdir de créer les répertoires parents si nécessaire.
  3. Les commandes echo créent des fichiers texte avec un contenu d'exemple à différents emplacements dans notre nouvelle structure de répertoires.

Maintenant, vérifions la structure que nous avons créée :

tree test_dir

Si vous ne voyez pas cette sortie ou si vous obtenez une erreur indiquant "commande introuvable", ne vous inquiétez pas. La commande tree n'est peut-être pas installée sur votre système. Vous pouvez utiliser ls -R test_dir à la place, qui affichera une sortie similaire (bien que moins graphique).

Empaquetage de fichiers avec tar

Maintenant que nous avons notre structure de répertoires d'exemple, apprenons à empaqueter des fichiers à l'aide de la commande tar. tar signifie "tape archive" (archive sur bande) et était à l'origine utilisé pour créer des archives sur des lecteurs de bandes. Aujourd'hui, il est couramment utilisé pour regrouper plusieurs fichiers et répertoires en un seul fichier.

Empaquetons notre répertoire test_dir :

cd ~/project
tar -cvf test_archive.tar test_dir

Analysons cette commande :

  • tar : C'est la commande que nous utilisons pour créer l'archive.
  • -c : Cette option indique à tar de créer une nouvelle archive.
  • -v : Cela signifie "verbose" (verbeux). Elle fait afficher à tar les noms des fichiers qu'il ajoute à l'archive. C'est optionnel mais utile pour voir ce qui se passe.
  • -f : Cette option est suivie du nom du fichier d'archive que nous voulons créer.
  • test_archive.tar : C'est le nom que nous donnons à notre nouveau fichier d'archive. L'extension .tar est conventionnelle pour les archives tar.
  • test_dir : C'est le répertoire que nous empaquetons dans l'archive.

Après avoir exécuté cette commande, vous devriez voir une liste des fichiers ajoutés à l'archive.

Pour afficher le contenu de l'archive sans l'extraire, vous pouvez utiliser :

tar -tvf test_archive.tar

Cette commande liste (-t) le contenu de l'archive, de manière verbeuse (-v), à partir du fichier (-f) nommé test_archive.tar.

Extraction de fichiers d'une archive tar

Avant de compresser notre archive tar, apprenons à en extraire les fichiers. C'est une compétence importante lorsqu'on travaille avec des archives tar.

Pour extraire le contenu de notre fichier test_archive.tar :

mkdir extracted_tar
tar -xvf test_archive.tar -C extracted_tar

Analysons cette commande :

  • mkdir extracted_tar : Cette commande crée un nouveau répertoire appelé extracted_tar où nous allons placer le contenu de notre archive.
  • tar : C'est la commande que nous utilisons pour extraire l'archive.
  • -x : Cette option indique à tar d'extraire des fichiers d'une archive.
  • -v : Cela rend l'opération verbeuse, en nous montrant chaque fichier au fur et à mesure de son extraction.
  • -f : Cette option spécifie le nom du fichier d'archive sur lequel effectuer l'opération. Lors de l'extraction de fichiers, elle doit être suivie du chemin ou du nom du fichier tar à extraire.
  • -C extracted_tar : Cette option indique à tar de changer de répertoire pour extracted_tar avant d'extraire les fichiers.

Après avoir exécuté cette commande, vous devriez voir une liste des fichiers en cours d'extraction.

Pour vérifier l'extraction, vous pouvez utiliser :

tree extracted_tar

Ou si tree n'est pas disponible :

ls -R extracted_tar

Cela vous montrera la structure de répertoires et les fichiers qui étaient dans l'archive.

Compression de fichiers avec gzip

Maintenant que nous avons créé une archive tar, compressons-la à l'aide de gzip :

gzip test_archive.tar

Cette commande compressera le fichier test_archive.tar et le renommera en test_archive.tar.gz. Le fichier original test_archive.tar sera remplacé par la version compressée.

Pour voir la taille du fichier compressé, vous pouvez utiliser la commande suivante :

ls -lh test_archive.tar.gz

Les options -lh afficheront la taille du fichier dans un format lisible par l'homme (comme KB, MB, etc.).

Il est important de noter que bien que l'extension .tar.gz soit courante, vous pourriez également voir .tgz, qui est équivalente.

Comprendre la différence entre l'empaquetage et la compression

Maintenant que nous avons effectué à la fois l'empaquetage et la compression, comprenons la différence entre ces opérations et comparons les tailles des fichiers.

  1. Empaquetage (archivage) :

    • But : Combiner plusieurs fichiers et répertoires en un seul fichier.
    • Ce qu'il fait : Regroupe les fichiers en ajoutant certains métadonnées.
    • Outil exemple : tar (Tape Archive - Archive sur bande)
    • Résultat : La taille totale de l'archive est souvent légèrement supérieure à la somme des tailles de tous les fichiers qu'elle contient.
  2. Compression :

    • But : Réduire la taille d'un fichier ou d'une archive.
    • Ce qu'elle fait : Applique des algorithmes pour éliminer les redondances dans les données, rendant le fichier plus petit.
    • Outils exemples : gzip, bzip2, xz
    • Résultat : Le fichier compressé est plus petit que l'original, mais nécessite une décompression avant utilisation.

Comparons les tailles de notre répertoire original, de l'archive tar et du fichier tar.gz compressé :

## Size of the original directory
echo "Size of the original directory:"
du -sh test_dir

## Size of the tar archive (we'll recreate it for this comparison)
tar -cvf test_archive_compare.tar test_dir
echo "Size of the tar archive:"
ls -lh test_archive_compare.tar

## Size of the compressed tar.gz file
echo "Size of the compressed tar.gz file:"
ls -lh test_archive.tar.gz

Vous remarquerez que :

  1. L'archive tar est légèrement plus grande que le répertoire original. C'est parce que tar ajoute certains métadonnées à l'archive, telles que les noms de fichiers, les autorisations et les structures de répertoires.
  2. Le fichier tar.gz compressé est nettement plus petit que le répertoire original et l'archive tar.

L'augmentation de taille après l'empaquetage est normale et prévisible. Le format tar ajoute un petit surcoût pour stocker les métadonnées des fichiers, ce qui est nécessaire pour reconstruire correctement la structure de répertoires lors du dépaquetage. Ce surcoût est généralement négligeable pour les répertoires plus volumineux, mais peut être perceptible pour de très petits fichiers ou répertoires.

La compression, en revanche, réduit considérablement la taille du fichier en identifiant et en éliminant les redondances dans les données. Cela est particulièrement efficace pour les fichiers texte ou les fichiers avec un contenu répétitif.

Création d'une archive compressée en une seule étape

Bien qu'il soit utile de comprendre les étapes distinctes de création d'une archive tar puis de sa compression, en pratique, ces étapes sont souvent combinées. La commande tar dispose d'une option intégrée pour compresser l'archive à l'aide de gzip lors de sa création.

Créons une archive tar compressée de notre répertoire test_dir en une seule étape :

cd ~/project
tar -czvf test_combined.tar.gz test_dir

Cette commande est similaire à celle que nous avons utilisée précédemment, avec une addition importante :

  • -z : Cette option indique à tar de compresser l'archive à l'aide de gzip.

Le fichier test_combined.tar.gz obtenu est équivalent à celui que nous avons créé dans les deux étapes précédentes, mais nous l'avons fait en une seule fois.

Pour afficher le contenu de cette archive compressée sans l'extraire :

tar -tzvf test_combined.tar.gz

L'option -z ici indique à tar que nous avons affaire à un fichier compressé avec gzip.

Extraction de fichiers d'une archive compressée

Maintenant que nous avons créé des archives compressées, il est important de savoir comment en extraire les fichiers. Extraitons le contenu de notre fichier test_combined.tar.gz :

mkdir extracted
tar -xzvf test_combined.tar.gz -C extracted

Analysons cette commande :

  • mkdir extracted : Cette commande crée un nouveau répertoire appelé extracted où nous allons placer le contenu de notre archive.
  • tar : C'est la commande que nous utilisons pour extraire l'archive.
  • -x : Cette option indique à tar d'extraire des fichiers d'une archive.
  • -z : Cette option est nécessaire car nous avons affaire à un fichier compressé avec gzip.
  • -v : Cela rend l'opération verbeuse, en nous montrant chaque fichier au fur et à mesure de son extraction.
  • -f : Elle est suivie du nom du fichier d'archive à partir duquel nous voulons extraire les fichiers.
  • -C extracted : Cette option indique à tar de changer de répertoire pour extracted avant d'extraire les fichiers.

Après avoir exécuté cette commande, vous devriez voir une liste des fichiers en cours d'extraction.

Pour vérifier l'extraction, vous pouvez utiliser :

tree extracted

Ou si tree n'est pas disponible :

ls -R extracted

Cela vous montrera la structure de répertoires et les fichiers qui étaient dans l'archive.

Utilisation de zip pour la compatibilité multiplateforme

Alors que tar et gzip sont couramment utilisés dans les systèmes Linux et Unix-like, le format zip est souvent utilisé pour une meilleure compatibilité avec les systèmes Windows. Créons une archive zip de notre répertoire test_dir :

cd ~/project
zip -r test_archive.zip test_dir

Voici ce que fait cette commande :

  • zip : La commande pour créer une archive zip.
  • -r : Cette option indique à zip de travailler de manière récursive, en incluant tous les fichiers et sous-répertoires.
  • test_archive.zip : C'est le nom que nous donnons à notre fichier zip.
  • test_dir : C'est le répertoire que nous ajoutons à l'archive zip.

Pour décompresser cette archive, vous pouvez utiliser :

unzip -d unzipped_files test_archive.zip

L'option -d spécifie le répertoire dans lequel décompresser. Si le répertoire unzipped_files n'existe pas, unzip le créera.

Les fichiers zip ont l'avantage d'être facilement reconnaissables et utilisables sur pratiquement tous les systèmes d'exploitation, ce qui en fait un bon choix pour partager des fichiers avec des utilisateurs sur différentes plateformes.

Résumé

Dans ce laboratoire, nous avons appris plusieurs techniques importantes d'empaquetage et de compression de fichiers couramment utilisées sous Linux :

  1. Nous avons créé une structure de répertoires d'exemple pour travailler, démontrant ainsi comment organiser les fichiers et les répertoires.
  2. Nous avons utilisé tar pour empaqueter des fichiers sans compression, ce qui est utile pour regrouper plusieurs fichiers et répertoires.
  3. Nous avons appris à extraire des fichiers d'une archive tar, une compétence essentielle lorsqu'on travaille avec des fichiers empaquetés.
  4. Nous avons utilisé gzip pour compresser des fichiers, ce qui peut réduire considérablement la taille des fichiers pour le stockage ou le transfert.
  5. Nous avons appris la différence entre l'empaquetage et la compression, en comprenant leurs objectifs et cas d'utilisation distincts.
  6. Nous avons appris à combiner tar et gzip pour créer des archives compressées en une seule étape, une opération courante dans les systèmes Linux.
  7. Nous avons pratiqué l'extraction de fichiers d'archives compressées, une autre compétence cruciale lorsqu'on travaille avec des fichiers empaquetés et compressés.
  8. Enfin, nous avons utilisé zip pour créer des archives avec une meilleure compatibilité multiplateforme, particulièrement utile lorsqu'on partage des fichiers avec des utilisateurs de Windows.

Ces compétences sont essentielles pour une gestion efficace des fichiers sous Linux, surtout lorsqu'on traite de grandes quantités de données ou lorsqu'on transfère des fichiers entre systèmes. N'oubliez pas que la compression peut réduire considérablement la taille des fichiers, rendant le stockage et le transfert beaucoup plus efficaces.

Au fur et à mesure que vous continuerez à travailler avec Linux, vous trouverez ces commandes inestimables pour gérer vos fichiers et répertoires. Entraînez-vous à effectuer ces opérations pour maîtriser les techniques d'empaquetage et de compression de fichiers.