Comment archiver et comprimer des données sous Linux

L’archivage consiste à stocker des données ou des répertoires en sécurité, le plus souvent sous forme comprimée. Pour des raisons de sécurité des données, l’archivage dans un environnement serveur a rapidement pris une importance grandissante. À la base, les données serveur étaient sécurisées par des lecteurs de bandes magnétiques. Pour des quantités de données importantes, cette méthode de sauvegarde est toujours d’actualité. Pour rendre le processus d’archivage aussi efficace que possible, le système Unix a développé dès 1979 le logiciel d’archivage de données dénommé tar (de l’anglais tape archiver). À l’aide de tar, les données et les répertoires sont archivés dans un fichier unique et les droits d’utilisateur restent intacts lorsque la source et la cible sont synchrones et que les droits de fichiers sont soutenus par Linux.

Pour économiser de l’espace mémoire lors du processus d’archivage, les données .tar sont comprimées à l’aide d’outils comme gzip, bzip2 ou encore lzop. Mais en quoi les différents programmes et formats de compression se distinguent-ils ? Et pourquoi les systèmes tels que Linux tar sont-ils d’une si grande importance ?

Backup Cloud IONOS

Finies les interruptions d'activité coûteuses ! Sauvegardez facilement les données de votre entreprise et bénéficiez d'un conseiller personnel.

Simple
Sûr
Intégré

Quels sont les principaux programmes de compression sous Linux ?

Il existe une série d’outils de compression gratuits sous Linux, qui ont tous une particularité en commun : ils peuvent être utilisés via un espace de commande. De courtes commandes permettent de comprimer rapidement des données, comme par exemple des documents HTML, ce qui apporte une optimisation de l’espace de la bande passante et du stockage lors de l’envoi sur des réseaux ou sur Internet. De plus, vous trouverez de manière standard des interfaces graphiques sur ces outils, tout comme des gestionnaires d’archives qui comprennent différentes interfaces utilisateur, sans pour autant à avoir à télécharger les programmes de compression. L’utilisation des interfaces graphiques requiert des ressources système tierces, c’est pourquoi le terminal détermine le nombre idéal de ressources pour la compression.

La principale différence avec les différents programmes repose sur le degré de compression, qui implique une durée de temps de compression variable. Par ailleurs, il est la plupart du temps possible de choisir différentes modifications, afin de choisir par exemple les meilleures économies de stockage ou encore de comprimer le plus rapidement possible des données. Un autre avantage repose sur les différents formats de sortie proposés. Au vu des multiples algorithmes utilisés, les données comprimées comportent plusieurs formats et requièrent différents programmes pour être décompressés.

gzip

gzip (GNU zip) est la méthode de compression la plus utilisée sous Linux. Cet outil basé sur l’algorithme Deflate et qui est le successeur du programme Compress d’Unix développé pour la plateforme GNU, joue un rôle important dans le développement Web. Aujourd’hui l’application utilise le langage de programmation C et peut grâce à plusieurs variantes être facilement utilisée pour la compression non seulement sous Linux mais aussi pour les systèmes Windows et MacOs afin d’extraire et de compresser ou de décompresser des fichiers et des paquets. Gzip ne traite pas correctement les fichiers trop volumineux et ne traite que les blocs de près de 32 000 octets. Ainsi, en comparaison avec d’autres logiciels de compression plus moderne, il peut paraître obsolète.

En terme de vitesse, le programme libre de compression est jusqu’à aujourd’hui à la pointe, c’est pourquoi les logiciels de serveurs Web populaires comme Apache, IIS ou NGINX ont généralement intégrés le programme dans un module afin de répondre en un court délai aux demandes des utilisateurs avec la compression des paquets de données. Pour plus d’informations sur ce logiciel de compression avec licence libre GPL, vous pouvez consulter notre article.

Avantages Inconvénients
Processus de compression rapide Taille réduite des blocs
Standard pour les logiciels de serveur Web Niveau de compression faible

bzip2

Pour une compression sans perte et de haute qualité des fichiers sous Linux, bzip2 est distribué sous une licence libre BSD. L’application utilise une technique de compression à trois niveaux : avec la technique appelée transformée de Burrows-Wheeler, elle trie les caractères dans différents blocs. Ils peuvent avoir une taille maximum de 900 000 octets. L’algorithme MTF (Move To Front) est appliqué et les caractères sont ainsi traités et déplacés vers l’avant. Enfin, le codage de Huffman assure la bonne compression des données. Avec bzip2 les données compressées obtiennent le format .bz2.

Le programme développé par Julian Seward est souvent bien plus performant en matière de compression et de loin, cependant il est en contrepartie aussi beaucoup plus lent. Un avantage de bzip2 est qu’il est possible avec ce logiciel de travailler avec des archives qui sont partiellement endommagées et de les décompresser. Par exemple, avec l’aide de bzip2recover, vous pouvez extraire au moins tous les blocs encore lisibles, puis les décompresser. Bzip2 est le successeur officiel de bzip qui fonctionnait avec un codage arithmétique mais qui n’est plus en développement pour des raisons de brevets.

Avantages Inconvénients
Très forte compression Très lent
Possibilité d’extraire des archives endommagées  

p7zip

p7zip est le portage de la version en ligne de commande de 7-zip, distribué sous la licence LGPL (Licence publique générale limitée GNU), c’est ainsi un logiciel libre pour les plateformes POSIX. Le logiciel est la seule solution sous Linux pour supporter complètement le format 7z. Le logiciel de compression développé en 1998 par Igor Viktorovitch Pavlov repose sur l’algorithme de Lempel-Ziv-Markov (LZMA pour Lempel-Ziv-Markov chain-Algorithm). Il utilise la méthode de compression avec dictionnaire et peut être considéré comme une version ultérieure de Deflate (compression plus forte d’environ 50 pourcent). L’archive de fichiers peut être fractionnée si nécessaire en plusieurs grandes parties, avec une protection par mot de passe et en option un cryptage AES-256 (en-tête).

LZMA offre de très bons résultats avec une compression puissante et de bons résultats au niveau de la vitesse. Cependant, l’outil de compression est très exigeant en matière de performance et de configuration du système. En particulier pour une compression de niveau élevée, un bon processeur (au moins 5 GHz) et suffisamment de RAM (2 Go ou plus) sont des conditions préalables. En plus de l’utilisation via le terminal ou un gestionnaire d’archives, p7zip-gui fournit aussi sa propre interface graphique pour accéder au portage 7-Zip.

Avantages Inconvénients
Excellent rapport entre la performance de compression et la durée Configuration système requise élevée
Cryptage et protection avec mot de passe possible.  

lzop

Le logiciel de compression lzop (Lempel-Ziv-Oberhumer-Packer) est, comme gzip, très performant au niveau de la vitesse de compression et de décompression réalisant même de meilleurs résultats que l’outil GNU. Il est basé sur l’algorithme éponyme de Lempel-Ziv-Oberhumer (LZO), qui a été aussi publié sous la licence général de GNU (GPL) en 1996. La compression est économe au niveau des ressources et fonctionne avec la technique du dictionnaire : les chaînes de caractères récurrentes sont remplacées par un symbole renvoyant à l’entrée correspondante de la première chaîne capturée dans le dictionnaire. Les données sont traitées en blocs de 256 000 octets. Par défaut, le fichier d’origine est maintenu lors du processus de compression.

En plus d’une grande vitesse de compression et de la compatibilité avec gzip, la portabilité du logiciel a également été une question centrale dans le développement du Lzop. C’est pourquoi, des versions existent pour pratiquement toutes les plateformes, y compris MacOs et Windows. Les fichiers compressés reçoivent le format .lzo.

Avantages Inconvénients
Compression très rapide Degré de compression assez faible du fait de la vitesse élevée.
Grande portabilité  

Tableau comparatif des outils et formats habituels

  gzip bzip2 p7zip lzop
Système d‘exploitation Multiplateforme Linux/Unix, Windows unixoide Multiplateforme
Licence GNU GPL Semblable à BSD GNU LGPL GNU GPL
Procédé de compression Algorithme Deflate Transformée de Burrows-Wheeler, algorithme Move to Front, codage Huffman Algorithme LZMA Algorithme LZO
Format des fichiers .gz .bz2 .7z .lzo
Cryptage     AES-256  
Mode de compression 1–9 1–9 0–9 1, 3, 7–9
Avantages Très rapide Bon degré de compression Excellent degré de compression, possibilité de comprimer les répertoires Grande rapidité, possibilité de comprimer les répertoires
Inconvénients Seuls les fichiers simples (individuels) peuvent être comprimés Vitesse moyenne, seuls les fichiers simples peuvent être comprimés Forte exigence envers la performance du système Faible degré de compression

Comment la compression des données fonctionne avec les outils Linux

Les programmes de compression mentionnés diffèrent considérablement en matière de taux de compression et de vitesse. Cependant au niveau de la syntaxe et de l’utilisation, il y a de fortes similitudes. Ils sont tous utilisables sans une interface utilisateur spécifique ou un gestionnaire d’archives, mais simplement à partir de la ligne de commande : même pour un débutant, il est facile de se familiariser rapidement avec les différents paramètres et commandes. Par exemple, nous allons vous montrer ci-dessous comment compresser des fichiers à l’aide de bzip2, puis comment décompresser les fichiers au format .bz2.

La syntaxe générale de bzip2 a la forme suivante :

bzip2 option fichier(s)

Il n’est pas nécessaire d’indiquer « option » pour le processus de compression par défaut. Ceci est uniquement nécessaire si vous souhaitez modifier les paramètres de compression et accéder au menu aperçu ou si vous voulez décompresser un fichier .bz2. Pour compresser un document texte, la commande test.txt est suffisante.

bzip2 test.txt

Elle supprime le fichier d’origine et le remplace par le fichier comprimé test.txt.bz2. Pour les documents reliés vous pouvez également utiliser une commande unique pour compresser plusieurs fichiers :

bzip2 test.txt test2.txt test3.txt

Si vous voulez décompresser un document déjà compressé, il est nécessaire de définir les paramètres d’options appropriés (-d) comme ci-dessous :

bzip2 -d test.txt

Aperçu des autres options de commande de bzip2 :

Option Description
-1 … -9 Pour définir le niveau de compression (1–9), la valeur 1 représente la compression la plus faible et la plus rapide, la valeur 9 représente à l’inverse le taux de compression le plus fort mais par conséquent la compression la plus lente. La valeur 5 est prédéfinie.
-f Démarre la compression même s’il existe déjà un fichier.bz2 avec le même nom. Dans ce cas le fichier existant sera écrasé.
-c Édite le document compressé sur la sortie standard (généralement le bureau).
-q Pour supprimer tous les avertissements et les messages de bzip2.
-v Affiche des informations supplémentaires comme le taux de compression pour chaque fichier traité.
-t Vérifie l’intégrité du fichier sélectionné.
-k L’ajout de ce paramètre à la commande de compression empêche la suppression du fichier source
-h Ouvre le menu aide.

Pourquoi le logiciel d’archivage de fichier tar est si demandé ?

Le programme d’archivage tar est utilisable depuis plus de 30 ans et son succès est loin de s’estomper. Cela vient notamment du fait que l’outil permet de préserver les droits d’utilisateurs lors de l’archivage et surtout qu’il permet de compresser des répertoires entiers. Cela fait de tar un partenaire parfait des outils de compression compatibles comme gzip et bzip2, qui peuvent eux compresser seulement un fichier à la fois. Le programme tar comprime donc toutes les données d’un répertoire en particulier pour en faire une donnée archivée, en laissant les données obtenues de manière intacte et liées entre elles. Au cours de la deuxième étape, la compression se poursuit à l’aide d’un logiciel de compression spécifique. Le résultat de la compression est effectué grâce à un programme spécifique. Le résultat, qui est décrit comme étant progressif, compact ou encore solide, est obtenu par les données archivées et comprennent des extensions de fichier comme .tar.gz (ou .tgz) et .tar.bz2 (ou .tbz2). Le programme de compression permet également de dézipper ce type de fichiers.

Tar archive : pour pouvoir (dé)compresser .tar.gz et Co sous Linux

La combinaison de tar et d’un outil de compression n’est pas obligatoire. En effet vous pouvez également intégrer les fichiers dans une archive, même s’ils ne sont pas encore compressés ou que vous n’en avez pas le besoin. Si vous souhaitez intégrer par exemple deux documents tests non compressés test.txt et test2.txt dans une seule archive sous le nom archive.tar, la commande suivante est suffisante :

tar -cf archive.tar test.txt test2.txt

Pour décompresser cette archive sous Linux, il suffit de remplacer le paramètre -c (créer une nouvelle archive) par -x (extraire les fichiers d’une archive). Dans la mesure où seulement une certaine partie de l’archive ne doit pas être extraite, vous pouvez alors le spécifier comme suit :

tar -xf archive.tar

Sinon, le programme tar offre également la possibilité d’assembler une archive compressée, par exemple sur la base de la compression gzip avec l’extension du format tar.gz. Puisque le programme a implémenté les options de compression et de décompression des logiciels bzip2, xz, compress et gzip, cela peut être effectué avec une seule commande :

tar -czf archive.tar.gz test.txt test2.txt

La commande d’extraction.tar.gz diffère de son équivalent pour les répertoires non compressés simplement en spécifiant le paramètre du logiciel de compression :

tar -xzf archive.tar.gz
Conseil

le paramètre -f, qui peut être utilisé pour sélectionner le fichier d’archive respectif doit toujours être à la dernière place, car les caractères suivants sont systématiquement interprétés comme un fichier.

Les principales commandes de l’application d’archivage

En plus des options de commande que nous venons d’énumérer plus haut pour l’archivage simple de vos fichiers, il existe un certain nombre d’autres paramètres que vous pouvez utiliser pour spécifier le processus d’archivage. Cela comporte notamment les méthodes de compression mentionnées, mais aussi les options pour les répertoires, ainsi que la vérification et l’affichage des archives tar. Ci-dessous un tableau illustrant ces options :

Option Description            
--help Pour afficher le menu aide            
-c Pour créer une nouvelle archive            
-d Compare les fichiers contenus dans l’archive à ceux présents sur le disque dur            
-f Spécifie le nom du fichier d’archive sélectionné à lire ou à écrire.            
-j Compresser ou décompresser des archives avec bzip2            
-J Compresser ou décompresser des archives avec xz            
-k Evite l’écrasement : empêche les fichiers existants d’être remplacés lors de l’extraction d’une archive.            
-p Veille à ce que les droits d‘accès restent pendant et après l’extraction            
-r Permet d’ajouter des fichiers à une archive            
-t Permet d’afficher le contenu d’une archive            
-u Permet de mettre à jour les fichiers de l‘archive            
-x Pour extraire des données d’une archive            
-z Pour compresser ou décompresser avec gzip avant d‘archiver            
-Z Compresser ou décompresser des archives avec Compress            
-A Implémente le contenu d’une archive dans une autre archive            
-C Modifications dans le répertoire spécifié pour décompresser les archives sélectionnées            
-M Permet de créer, d’afficher ou d’extraire une archive en plusieurs parties.            
-W Vérifie l’archive après le processus d’archivage            
Conseil

certaines options comme l’ajout de fichiers aux archives existantes (-r), ne fonctionnent pas avec les archives compressés, elles doivent donc d’abord être extraites.

Exemple :

Affichage du contenu d’une archive

tar -tf archive.tar

Mise à jour du contenu d’une archive (ne prend pas en compte les sous-répertoires !)

tar -uf archive.tar Fichier(s)

Développer le contenu d’une archive

tar -rf archive.tar Nouveau fichier

Comparer le contenu d’une archive avec le fichier du système (exécution dans le répertoire des archives !)

tar -dvf archive.tar

File Roller : le gestionnaire d’archives pour GNOME

File Roller est une interface graphique pour différents logiciels de compression et programmes. Son usage ne requiert généralement qu’une seule barre de commandes. Le gestionnaire d’archives est disponible pour les applications desktop GONME et Unity, il est distribué sous licence GNU depuis 2001. Cela permet au contenu de différentes données archivées d’être affiché et dézippé, supprimé ou ajouté. Aussi, la création de données et d’une archive tout comme la modification dans un autre format est possible. Pour cela, la fenêtre principale du logiciel compte plusieurs boutons et menus, ainsi qu’une option glisser-déposer.

En plus du format d’archivage tar comme .tar.gz, File Roller est compatible avec les formats suivants :

  • .7z
  • .tar
  • .gzip
  • .bzip2
  • .ar
  • .jar
  • .cpio

De manière standard, File Roller est préinstallé sur quelques systèmes comme par exemple Linux ou Ubuntu. À l’aide d’un gestionnaire, il est possible de l’installer de manière alternative ou encore de le télécharger via la page officielle. Pour les desktops, il est également possible d’utiliser Ark pour KDE.