Introduction
Dans cet atelier, nous allons apprendre à regrouper et à compresser des fichiers et des répertoires à l'aide des commandes Linux courantes telles que tar, gzip et zip. Ces outils sont indispensables pour administrer un système Linux, car ils permettent de stocker et de transférer des données de manière optimisée. Nous commencerons par des opérations de base pour progresser vers des tâches plus complexes, en détaillant chaque étape du processus.
Création d'une structure de répertoires d'exemple
Commençons par créer une arborescence de test. Cela nous permettra d'observer comment l'archivage et la compression se comportent avec différents types de fichiers et de dossiers.
Ouvrez votre terminal et saisissez 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
Voici le détail de ces opérations :
cd ~/project: Vous place dans le dossierprojectde votre répertoire personnel.mkdir -p test_dir/{subdir1,subdir2}: Crée un nouveau répertoire nommétest_dircontenant deux sous-répertoires :subdir1etsubdir2. L'option-ppermet de créer les répertoires parents si nécessaire.- Les commandes
echogénèrent des fichiers texte contenant un message d'exemple à différents endroits de notre structure.
Vérifions maintenant l'arborescence créée :
tree test_dir
Si vous ne voyez pas ce résultat ou si vous recevez un message d'erreur indiquant "command not found", ne vous inquiétez pas. La commande tree n'est peut-être pas installée. Vous pouvez utiliser ls -R test_dir à la place, ce qui affichera un résultat similaire (bien que moins graphique).
Archivage de fichiers avec tar
Maintenant que notre structure de test est prête, découvrons l'archivage avec la commande tar. Le nom tar signifie "tape archive" (archive sur bande), car il était initialement utilisé pour sauvegarder des données sur des lecteurs de bandes magnétiques. Aujourd'hui, il sert principalement à regrouper plusieurs fichiers et dossiers dans un seul fichier unique.
Archivons notre dossier test_dir :
cd ~/project
tar -cvf test_archive.tar test_dir
Analysons les options utilisées :
tar: La commande d'archivage.-c: Indique à tar de créer (create) une nouvelle archive.-v: Signifie "verbose" (bavard). Cela affiche la liste des fichiers au fur et à mesure de leur ajout. C'est facultatif mais utile pour suivre l'avancement.-f: Doit être suivi du nom du fichier d'archive que nous souhaitons créer.test_archive.tar: Le nom donné à notre archive. L'extension.tarest la convention standard.test_dir: Le répertoire que nous souhaitons regrouper dans l'archive.
Après l'exécution, vous devriez voir la liste des fichiers ajoutés.
Pour consulter le contenu de l'archive sans l'extraire, utilisez :
tar -tvf test_archive.tar
Cette commande liste (-t) le contenu de l'archive, de manière détaillée (-v), à partir du fichier (-f) nommé test_archive.tar.
Extraction de fichiers d'une archive tar
Avant de passer à la compression, apprenons à extraire les fichiers d'une archive. C'est une manipulation fondamentale au quotidien.
Pour extraire le contenu de notre fichier test_archive.tar :
mkdir extracted_tar
tar -xvf test_archive.tar -C extracted_tar
Détail de la commande :
mkdir extracted_tar: Crée un dossier de destination pour accueillir les fichiers extraits.tar: La commande utilisée.-x: Indique à tar d'extraire (extract) les fichiers.-v: Mode verbeux pour visualiser l'extraction.-f: Spécifie le fichier archive source.-C extracted_tar: Cette option (C majuscule) indique à tar de se déplacer dans le répertoireextracted_taravant de procéder à l'extraction.
Une fois terminé, vérifiez le résultat :
tree extracted_tar
Ou si tree n'est pas disponible :
ls -R extracted_tar
Vous retrouverez ainsi la structure exacte et les fichiers qui étaient stockés dans l'archive.
Compression de fichiers avec gzip
Maintenant que nous avons une archive tar, compressons-la avec gzip pour réduire son poids :
gzip test_archive.tar
Cette commande compresse test_archive.tar et le renomme automatiquement en test_archive.tar.gz. Notez que le fichier original .tar est remplacé par sa version compressée.
Pour vérifier la taille du fichier compressé, utilisez :
ls -lh test_archive.tar.gz
L'option -lh affiche la taille dans un format lisible par l'humain (Ko, Mo, etc.).
À noter : bien que l'extension .tar.gz soit la plus courante, vous rencontrerez parfois l'extension .tgz, qui est strictement équivalente.
Comprendre la différence entre archivage et compression
Après avoir manipulé ces outils, il est crucial de distinguer ces deux concepts et de comparer l'espace disque occupé.
Archivage (Packaging) :
- Objectif : Regrouper plusieurs fichiers et dossiers en un seul bloc.
- Action : Rassemble les fichiers en ajoutant des métadonnées.
- Outil type :
tar - Résultat : La taille de l'archive est souvent légèrement supérieure à la somme des fichiers originaux.
Compression :
- Objectif : Réduire le poids d'un fichier ou d'une archive.
- Action : Utilise des algorithmes pour éliminer les redondances de données.
- Outils types :
gzip,bzip2,xz - Résultat : Le fichier est plus petit, mais doit être décompressé avant d'être utilisé.
Comparons les tailles de notre répertoire original, de l'archive tar et du fichier compressé :
## Taille du répertoire original (somme réelle des fichiers)
echo "Taille du répertoire original (contenu des fichiers) :"
find test_dir -type f -exec ls -l {} \; | awk '{total += $5} END {print total " bytes"}'
## Taille de l'archive tar (nous la recréons pour la comparaison)
tar -cvf test_archive_compare.tar test_dir
echo "Taille de l'archive tar :"
ls -lh test_archive_compare.tar
## Taille du fichier compressé tar.gz
echo "Taille du fichier compressé tar.gz :"
ls -lh test_archive.tar.gz
## Pour référence, l'occupation disque (incluant le partitionnement du système de fichiers)
echo "Occupation disque du répertoire original :"
du -sh test_dir
Vous observerez que :
- L'archive tar est un peu plus volumineuse que la somme des fichiers. C'est normal : tar ajoute des informations sur les noms de fichiers, les permissions, les dates et la structure des dossiers.
- Le fichier
.tar.gzest nettement plus petit que les fichiers originaux et que l'archive tar. - L'occupation disque (
du) peut différer de la taille réelle car elle prend en compte la manière dont le système alloue les blocs sur le disque.
L'augmentation de taille lors de l'archivage est attendue. Le format tar nécessite un petit surplus pour stocker les métadonnées indispensables à la reconstruction fidèle de l'arborescence. Ce surplus est négligeable pour de gros volumes mais visible sur de petits fichiers.
À l'inverse, la compression réduit drastiquement la taille en identifiant les répétitions dans les données, ce qui est particulièrement efficace sur les fichiers texte.
Créer une archive compressée en une seule étape
S'il est utile de comprendre les étapes séparées, on combine généralement l'archivage et la compression en une seule commande. tar possède une option intégrée pour appeler gzip simultanément.
Créons une archive compressée de notre test_dir en un seul passage :
cd ~/project
tar -czvf test_combined.tar.gz test_dir
Cette commande ressemble à la précédente, avec un ajout majeur :
-z: Indique à tar de compresser l'archive en utilisant gzip.
Le fichier test_combined.tar.gz obtenu est identique à celui que nous avions créé en deux temps, mais le processus est plus rapide.
Pour voir le contenu sans extraire :
tar -tzvf test_combined.tar.gz
L'option -z précise ici que nous traitons un fichier compressé avec gzip.
Extraction d'une archive compressée
Maintenant que nous savons créer des archives compressées, voyons comment les décompresser et les extraire. Utilisons notre fichier test_combined.tar.gz :
mkdir extracted
tar -xzvf test_combined.tar.gz -C extracted
Détail de la commande :
mkdir extracted: Création du dossier de destination.tar: La commande principale.-x: Extraction.-z: Décompression gzip nécessaire pour lire le fichier.-v: Mode verbeux.-f: Spécifie le fichier source.-C extracted: Destination de l'extraction.
Vérifiez le contenu extrait :
tree extracted
Ou :
ls -R extracted
Utilisation de zip pour la compatibilité multiplateforme
Bien que tar et gzip soient les standards sous Linux et Unix, le format zip est souvent privilégié pour échanger des fichiers avec des utilisateurs sous Windows. Créons une archive zip de notre dossier :
cd ~/project
zip -r test_archive.zip test_dir
Explication :
zip: La commande de création d'archive zip.-r: Indique un traitement récursif (inclut tous les sous-dossiers et fichiers).test_archive.zip: Le nom du fichier de sortie.test_dir: Le dossier source.
Pour décompresser cette archive, utilisez :
unzip -d unzipped_files test_archive.zip
L'option -d spécifie le répertoire de destination. Si unzipped_files n'existe pas, unzip le créera automatiquement.
L'avantage du format Zip est sa reconnaissance native par la quasi-totalité des systèmes d'exploitation, ce qui en fait un excellent choix pour le partage de fichiers.
Résumé
Dans cet atelier, nous avons exploré les techniques fondamentales d'archivage et de compression sous Linux :
- Nous avons mis en place une structure de fichiers pour nos tests.
- Nous avons utilisé
tarpour regrouper des fichiers sans compression. - Nous avons appris à extraire le contenu d'une archive tar.
- Nous avons utilisé
gzippour réduire la taille des fichiers. - Nous avons analysé la différence conceptuelle entre l'archivage (regroupement) et la compression (réduction de taille).
- Nous avons maîtrisé la création d'archives compressées en une seule commande avec
tar -z. - Nous avons pratiqué l'extraction de fichiers à partir d'archives compressées.
- Enfin, nous avons utilisé
zippour garantir une compatibilité maximale avec d'autres systèmes comme Windows.
Ces compétences sont cruciales pour une gestion efficace des fichiers, notamment lors de la manipulation de gros volumes de données ou du transfert de fichiers entre serveurs. N'oubliez pas que la compression permet d'économiser de l'espace disque et de réduire les temps de transfert.
Au fil de votre progression sous Linux, ces commandes deviendront des outils quotidiens indispensables. Continuez à les pratiquer pour devenir parfaitement à l'aise avec ces manipulations.



