Compression de données
Cet article a pour but de recenser différentes manières de compresser/décompresser des données sous des systèmes Linux.
Archive tar
Compresser tar
INFORMATION
La commandetar
enregistre le chemin des fichiers archivés. Aussi, je recommande de se placer dans le répertoire contenant le dossier à archiver car sinon lors de la décompression, cet abruti va créer tout la succession de sous-dossier contenant les fichiers au moment de la création de l'archive.En Gzip
tar czvf mon_archive.tar.gz mon_dossier
En Bzip2
tar cjvf mon_archive.tar.xz mon_dossier
Lister tar
tar tf mon_archive.tar.gz
Décompresser tar
En Gzip
tar xzvf mon_archive.tar.gz mon_dossier
En Bzip2
tar xjvf mon_archive.tar.xz mon_dossier
INFORMATION
Avec les versions récentes detar
, il n'est plus nécessaire de préciser un paramètre de format de décompression, ce dernier détectant automatiquement celui qui a été utilisé pour la compression.ASTUCE
Avec l'option-C
, il est possible de spécifier l'emplacement d'extraction de l'archive en lieu et place du répertoire courant.Archive ZIP
Zip est universel, globalement tout les systèmes d'exploitation pourront en faire quelque chose. Sous Debian, les commandes zip
et unzip
se trouvent dans le paquet zip
.
Compresser ZIP
zip -r mon_archive.zip mon_dossier
Lister ZIP
unzip -l mon_archive.zip
Décompresser ZIP
unzip mon_archive.zip
ASTUCE
Avec l'option-d
, il est possible de spécifier l'emplacement d'extraction de l'archive en lieu et place du répertoire courant.Pour décompresser plusieurs archives ZIP en une seule commande, la méthode suivante peut-être utilisée :
unzip '*.zip'
Archive 7zip
Sous Debian, la commande 7z
se trouve dans le paquet p7zip-full
.
Compresser 7zip
7z a mon_archive.7z mon_dossier
ASTUCE
Il est possible de chiffrer l'archive via le paramètre-p
(le mot de passe sera demandé à l'issue) ou via ce même paramètre mais avec le mot de passe collé comme ceci: -pMotDePasse
.Lister 7zip
7z l mon_archive.7z
INFORMATION
Même chiffré, le nom des fichiers archivés sont listables.Décompresser 7zip
7z x mon_archive.7z
INFORMATION
Si l'archive a été chiffrée, le mot de passe sera automatiquement demandé à la décompression.ASTUCE
Avec l'option-o/chemin/destination
, il est possible de spécifier l'emplacement d'extraction de l'archive en lieu et place du répertoire courant (attention à bien coller le chemin de destination à l'argument).Format Gzip
Gzip n'est pas une archive, c'est réellement une compression de fichier. Il est possible de concaténer plusieurs fichiers dans un Gzip (voir la section Advanced Usage du man).
Compresser Gzip
gzip -9 mon_fichier > mon_fichier.gz
ATTENTION
La commandegzip
remplace le fichier original par le fichier compressé. Prenez en compte ce paramètre pour ne pas avoir de mauvaises surprises. Il est possible de garder le fichier original avec l'option -k
.ASTUCE
Le paramètre-9
(noté -#
dans le man) est le taux de compression (1 étant le plus faible/rapide jusqu'à 9 le plus fort/rapide). En l'absence de ce paramètre, c'est le niveau 6 qui est utilisé.Décompresser Gzip
gunzip mon_fichier.gz
Directement sur un volume de type bloc
gunzip -k -c fichier.img.gz | dd of=/dev/mmcblk0 bs=4M conv=fsync status=progress
Format Xz
Xz se base sur l’algorithme LZMA2 et propose le meilleur taux de compression qui soit.
Compresser Xz
xz -z mon_fichier
ou
xz --compress mon_fichier
ASTUCE
La compression remplace le fichier original par le fichier compressé. Pour le garder, il faut ajouter l'option-k
.INFORMATION
Il est également possible d'utiliser un chiffre (de 0 à 9) pour le taux de compression comme pour Gzip. La valeur "6" est définie par défaut.Décompresser Xz
xz -d mon_fichier.xz
ou
unxz mon_fichier.xz
Aussi étrange que cela puisse paraître, l'outil ne permet pas de décompresser dans un répertoire particulier. Pour y remédier, il faut envoyer le flux de sortie vers le stdout de la console et le rediriger dans le fichier voulu :
xz -d mon_fichier.xz -c > /chemin/votre_fichier
Note : l'option -c
implique automatiquement le -k
pour garder le fichier d'origine.
ASTUCE
Xz peut être assez lent. Aussi, s'il s'agit d'un fichier ISO que vous voulez copier au niveau des blocs d'un support de démarrage, vous pouvez envoyer la décompression directement vers dd qui se chargera d'écrire sur votre mémoire (ça fait gagner un sacrés temps):xzcat VotreFichier.xz | dd of=/dev/VotreDisque bs=4M conv=fsync status=progress
.Sources
- Les pages de man:
- https://www.commentcamarche.com/faq/955-linux-compresser-decompresser-un-fichier-zip
- https://superuser.com/questions/216617/view-list-of-files-in-zip-archive-on-linux
- https://www.it-connect.fr/creer-une-archive-7-zip-chiffree-en-ligne-de-commande-sous-linux/
- https://superuser.com/questions/368470/7-zip-command-line-to-extract-a-folder-from-an-archive
- https://www.it-connect.fr/la-compression-avec-xz-sous-linux/