La compression est très utile lors de la sauvegarde de fichiers importants et de l'envoi de fichiers volumineux sur Internet. Dans ce didacticiel, nous expliquerons comment compresser et décompresser des fichiers sous Linux à l'aide de deux programmes en ligne de commande, à savoir gzip et bzip2 .
Remarque :
La compression d'un fichier déjà compressé ajoute une surcharge supplémentaire, vous obtiendrez donc un fichier légèrement plus gros. Alors, arrêtez de compresser un fichier compressé.
Compresser et décompresser des fichiers sous Linux
Comme indiqué précédemment, les programmes les plus couramment utilisés pour compresser les fichiers dans les systèmes Linux et Unix sont :
- gzip
- bzip2
Dans un premier temps, nous verrons l'utilisation de Gzip.
1. Compressez et décompressez les fichiers à l'aide du programme Gzip
Le gzip est un utilitaire pour compresser et décompresser des fichiers en utilisant l'algorithme de codage Lempel-Ziv (LZ77).
1.1 Compresser les fichiers
Pour compresser un fichier nommé ostechnix.txt , en le remplaçant par une version compressée gzippée, exécutez :
$ gzip ostechnix.txt
Gzip remplacera le fichier d'origine ostechnix.txt avec une version compressée gzippée nommée ostechnix.txt.gz .
La commande gzip peut également être utilisée d'autres manières. Un bon exemple est que nous pouvons créer une version compressée de la sortie d'une commande spécifique. Regardez la commande suivante.
$ ls -l Downloads/ | gzip > ostechnix.txt.gz
La commande ci-dessus crée une version compressée de la liste des répertoires du dossier Téléchargements.
1.2 Compressez les fichiers et écrivez la sortie dans différents fichiers (ne remplacez pas le fichier d'origine)
Par défaut, le programme gzip compressera le fichier donné, le remplaçant par une version compressée gzip. Vous pouvez cependant conserver le fichier d'origine et écrire la sortie sur la sortie standard. Par exemple, la commande suivante compresse ostechnix.txt et écrit la sortie dans output.txt.gz .
$ gzip -c ostechnix.txt > output.txt.gz
De même, pour décompresser un fichier gzippé en spécifiant le nom du fichier de sortie :
$ gzip -c -d output.txt.gz > ostechnix1.txt
La commande ci-dessus décompresse le output.txt.gz fichier et écrit la sortie dans ostechnix1.txt dossier. Dans les deux cas, il ne supprimera pas le fichier d'origine.
1.3 Décompresser les fichiers
Pour décompresser le fichier ostechnix.txt.gz , en la remplaçant par la version originale non compressée, nous faisons :
$ gzip -d ostechnix.txt.gz
Nous pouvons également utiliser gunzip pour décompresser les fichiers.
$ gunzip ostechnix.txt.gz
1.4 Afficher le contenu des fichiers compressés sans les décompresser
Pour afficher le contenu du fichier compressé à l'aide de gzip sans le décompresser, utilisez -c drapeau comme indiqué ci-dessous :
$ gunzip -c ostechnix1.txt.gz
Vous pouvez également utiliser zcat utilitaire comme ci-dessous.
$ zcat ostechnix.txt.gz
Vous pouvez également diriger la sortie vers la commande "moins" pour afficher la sortie page par page comme ci-dessous.
$ gunzip -c ostechnix1.txt.gz | less
$ zcat ostechnix.txt.gz | less
Alternativement, il y a un zless programme qui remplit la même fonction que le pipeline ci-dessus.
$ zless ostechnix1.txt.gz
1.5 Compresser le fichier avec gzip en spécifiant le niveau de compression
Un autre avantage notable de gzip est qu'il prend en charge le niveau de compression. Il prend en charge 3 niveaux de compression comme indiqué ci-dessous.
- 1 - Le plus rapide (le pire)
- 9 - Le plus lent (meilleur)
- 6 - Niveau par défaut
Pour compresser un fichier nommé ostechnix.txt , en le remplaçant par une version compressée gzippée avec best niveau de compression, nous utilisons :
$ gzip -9 ostechnix.txt
1.6 Concaténer plusieurs fichiers compressés
Il est également possible de concaténer plusieurs fichiers compressés en un seul. Comment? Regardez l'exemple suivant.
$ gzip -c ostechnix1.txt > output.txt.gz
$ gzip -c ostechnix2.txt >> output.txt.gz
Les deux commandes ci-dessus compresseront ostechnix1.txt et ostechnix2.txt et les enregistreront dans un fichier nommé output.txt.gz .
Vous pouvez afficher le contenu des deux fichiers (ostechnix1.txt et ostechnix2.txt) sans les extraire à l'aide de l'une des commandes suivantes :
$ gunzip -c output.txt.gz
$ gunzip -c output.txt
$ zcat output.txt.gz
$ zcat output.txt
Pour plus de détails, reportez-vous aux pages de manuel.
$ man gzip
2. Compressez et décompressez les fichiers à l'aide du programme bzip2
Le bzip2 est très similaire au programme gzip, mais utilise un algorithme de compression différent nommé l'algorithme de compression de texte par tri de blocs de Burrows-Wheeler et le codage de Huffman. Les fichiers compressés avec bzip2 se termineront par .bz2 extension.
Comme je l'ai dit, l'utilisation de bzip2 est presque la même que celle de gzip. Remplacez simplement gzip dans les exemples ci-dessus avec bzip2 , gunzip avec bunzip2 , zcat avec bzcat et ainsi de suite.
Pour compresser un fichier à l'aide de bzip2, en le remplaçant par une version compressée, exécutez :
$ bzip2 ostechnix.txt
Si vous ne voulez pas remplacer le fichier d'origine, utilisez -c flag et écrivez la sortie dans un nouveau fichier.
$ bzip2 -c ostechnix.txt > output.txt.bz2
Pour décompresser un fichier compressé :
$ bzip2 -d ostechnix.txt.bz2
Ou,
$ bunzip2 ostechnix.txt.bz2
Pour afficher le contenu d'un fichier compressé sans le décompresser :
$ bunzip2 -c ostechnix.txt.bz2
Ou,
$ bzcat ostechnix.txt.bz2
Pour plus de détails, consultez les pages de manuel.
$ man bzip2
Suggestion de lecture :
- Pigz - Compresser et décompresser des fichiers en parallèle sous Linux
Résumé
Dans ce tutoriel, nous avons appris ce que sont les programmes gzip et bzip2 et comment les utiliser pour compresser et décompresser des fichiers avec quelques exemples sous GNU/Linux. Dans le prochain guide, nous allons apprendre comment archiver des fichiers et des répertoires sous Linux .