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

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

  • 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
$ 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 zipet 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
  • 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 .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é au vu des résultats des commandes :

apt-cache search backup || yum search backup

Commentaires