Objectifs de certification


4. Archivage et compression

Outils étudiés :

  • tar/untar
  • gzip/gunzip
  • bzip2/bunzip2
  • xz/unxz
  • zip/unzip
  • zcat
  • cpio/pax

Création de quelques fichiers à la volée :

for i in 0 1 2 3 4 5 6 7 8 9 ; do echo "fichier$i" > fichier$i ; done

De manière plus élégante :

for ((i=0;i<10;i=i+1)) ; do echo "fichier$i" > fichier$i ; done

Ou alors, probablement plus efficace :

for i in {0..9} ; do echo "fichier$i" > fichier$i ; done

1. Définitions

  • Compression : Réduire la taille d’un fichier par algorithme de compression.
  • Archivage : Placer un ensemble de fichiers et/ou de dossiers dans un seul fichier.
  • Compression sans archivage : gzip/gunzip, bzip2/bunzip2
  • Archivage avec ou sans compression : tar, star

2. Compression gzip/gunzip

L’utilitaire gzip est basé sur l’algorithme Deflate (combinaison des algorithmes LZ77 et Huffman). C’est la méthode de compression la plus populaire sous GNU/Linux.

Compresser un fichier (le fichier est remplacé par son format compressé) :

gzip mon_fichier
ls -lh

Décompresser un fichier gzippé :

gunzip mon_fichier_compresse.gz
ls -lah

ou bien

gzip -d mon_fichier_compresse.gz

Compresser un fichier de façon optimisée :

gzip -9 mon_fichier

Compresser plusieurs fichiers en un :

gzip -c mon_fichier1 mon_fichier2 > mon_fichier_compresse.gz

3. Compression bzip2

bzip2 est une alternative à gzip, plus efficace mais moins rapide.

Compresser un fichier :

bzip2 mon_fichier

Décompresser un fichier bzippé :

bunzip2 mon_fichier_compresse.bz2

4. Commande tar

Tar (« tape archiver », en français « archiveur pour bande », son rôle à l’origine) est le programme d’archivage de fichiers le plus populaire sous GNU/Linux et les systèmes Unix. Il est généralement installé par défaut. On peut ajouter à une archive tar différents algorithmes de compression. On notera également que tar préserve les permissions et les propriétaires des fichiers, ainsi que les liens symboliques.

Les programmes cpio et pax peuvent aussi créer des archives en utilisant des redirections (< | >).

star fonctionne de la manière que taren supportant les ACLs.

tar : archivage sans compression

Pour archiver plusieurs fichiers ou un dossier, la commande est la même :

tar cvf mon_archive.tar fichier1 fichier2
tar cvf mon_archive.tar dossier1/

Pour extraire une archive tar, tapez :

tar xvf mon_archive.tar

Les principales options de tar sont les suivantes et peuvent se combiner à souhait :

  • c / x : construit / extrait l’archive ;
  • v : mode bavard ;
  • f : utilise le fichier donné en paramètre.

tar : archivage avec compression

Tar peut archiver en utilisant des algorithmes de compression, afin d’avoir des archives moins volumineuses. Par habitude, on suffixe les archives avec un . suivi d’une extension de compression. Il suffit pour cela d’ajouter à la commande tar une option de compression :

  • z : compression Gunzip
  • j : compression Bzip2

Pour archiver et compresser un dossier avec Gunzip, tapez :

tar cvzf mon_archive.tar.gz dossier1/

Pour extraire une archive tar.gz, tapez :

tar xvzf mon_archive.tar.gz

De même pour Bzip2 :

tar cvjf mon_archive.tar.bz2 dossier1/
tar xvjf mon_archive.tar.bz2

star

Le logiciel star est l’équivalent de tar avec le support des ACLs.

yum -y install star

Si l’option -aclest choisie les ACLs sont sauvegardées en mode création et restaurées en mode extraction.

5. XZ

XZ Utils (anciennement LZMA Utils) est un ensemble d’outils de compression en ligne de commande compressient LZMA et xz.

XZ Utilsest composé de deux composants principaux :

  • xz l’outil de compression similaire à gzip,
  • liblzma, une librairie logicielle comparable zlib

Différentes commandes raccourcies existent comme :

  • lzma (pour xz --format=lzma)
  • unxz (pour xz --decompress; analogous to gunzip)
  • xzcat (pour unxz --stdout; analogous to zcat)

La compression par défaut est xz

Compresser une archive :

xz   my_archive.tar    # results in my_archive.tar.xz
lzma my_archive.tar    # results in my_archive.tar.lzma

Décompresser l’archive :

unxz    my_archive.tar.xz      # results in my_archive.tar
unlzma  my_archive.tar.lzma    # results in my_archive.tar

Créer une archive et la compresser :

tar -c --xz   -f my_archive.tar.xz   /some_directory    # results in my_archive.tar.xz
tar -c --lzma -f my_archive.tar.lzma /some_directory    # results in my_archive.tar.lzma

Décompresser une archive et extraire son contenu :

tar -x --xz   -f my_archive.tar.xz      # results in /some_directory
tar -x --lzma -f my_archive.tar.lzma    # results in /some_directory

6. ZIP

ZIP est un vieux format d’archive, mais aussi celui d’une commande pour créer ce type d’archive.

On utilise alors les commandes zip et unzip.

Création ZIP

zip votre_archive.zip [liste des fichiers]
zip -r votre_archive.zip [dossier]

Afin de compresser plusieurs sous-dossiers séparément (bash) :

for f in * ; do zip "$f.zip" "$f"/* ; done

Note : zip -e votre_archive.zip [liste des fichiers] chiffre le zip et demande un mot de passe.

Extraction unzip

unzip votre_archive.zip -d mon_repertoire

Extraction de plusieurs fichiers .zip d’un même dossier :

for f in *.zip ; do unzip "$f" ; done

7. Archives zip découpées

Quelques fois les archives zip sont découpées comme suit : archive.z01, archive.z02, …, archive.zip. Il faut rassembler les fichiers dans une seule archive, puis extraire cette dernière :

cat archive.z* > archive_globale.zip
unzip archive_globale.zip

8. Autres logiciels

La curiosité nous invite à consulter les résultats des commandes de recherche de paquets avec le terme “backup” :

apt-cache search backup || yum search backup

Laisser un commentaire