====== Compresser un ou des fichiers en ligne de commande ======
===== Première méthode, avec zip =====
Les avantages de cette méthode sont la compatibilité du format, la relative vitesse d'exécution et la simplicité de la syntaxe.
Mais le taux de compression est faible.
==== Syntaxe ====
''zip -rv9 fichier.zip /chemin/source/.''
*''-r'' pour récursif;
*''-v'' pour verbeux;
*''-9'' pour compresser au maximum;
Le point final permet d'inclure les fichier cachés.
Pour décompresser, on utilise bien sûr ''unzip fichier.zip'' pour extraire dans le dossier courant, sinon ''unzip fichier.zip -d /chemin''
Un dossier générique de 224 Mo contenant des pdf, doc, xls, jpg, tiff, txt est compressé à 145 Mo en 24 sec.
===== Seconde méthode, offrant une bonne compression avec pbzip2 =====
pbzip2 permet d'utiliser la compression bzip2 sur plusieurs cœurs en parallèle, ce qui permet d'allier un taux de compression satisfaisant à une rapidité correcte. Sa syntaxe compliquée (je déteste l'idée de devoir passer par tar pour compresser un dossier) fait que je ne l'utilise jamais
==== Syntaxe ====
''tar cvf output.bz2 -I pbzip2 chemin/''
Où :\\
*''-c'' = créer archive
*''-v'' = verbeux
*''-f'' = préciser le fichier de sortie
Pour décompresser : ''tar -xvf output.bz2''
31s pour compresser un dossier générique de 224 Mo contenant des pdf, doc, xls, jpg, tiff, txt en un fichier de 139 Mo.
===== Troisième méthode, offrant la meilleure compression et la syntaxe la plus simple, avec lrzip =====
J'aime beaucoup lrzip car sa syntaxe est très simple et le taux de compression est très bon. Par défaut, ça utilise lzma et rzip, qui allient rapidité et très bon taux de compression.
Le taux de compression est le meilleur des algorithmes testés ici. Alliée à sa syntaxe enfantine, je l'utilise tout le temps.
On peut ajouter l'option -z pour utiliser la compression zpaq. C'est BEAUCOUP plus lent, pour un taux de compression certes un peu plus élevé mais qui n'a de sens que si la taille finale est le critère déterminant.
Petite particularité : la commande ''lrzip'' de base ne permet de compresser qu'un seul fichier (typiquement une archive tar). Pour compresser directement un dossier, il faut utiliser ''lrztar'' (fourni avec lrzip).
==== Syntaxe ====
* Pour une seul fichier : ''lrzip (-z) fichier''
* Pour un dossier ''lrztar (-z) chemin/''
Pour décompresser : ''lrzip -d fichier.lrz'' ou ''lrztar -d fichier.lrz''
Un dossier générique de 224 Mo contenant des pdf, doc, xls, jpg, tiff, txt est réduit à 124 Mo en 53 sec grâce à l'utilisation du parallélisme.
===== ☢ Quatrième méthode : 7zip (tout simplement) =====
(Ajout quelques années après parution initiale de cet article)
Suite à la lecture du récent article de Seb Sauvage (https://sebsauvage.net/wiki/doku.php?id=compression), je me suis re-penché sur 7zip, que je n'avais plus utilisé depuis mes années Windows. C'est désormais la méthode que je vais utiliser, pour plusieurs raisons :
* j'ai effectué un test de compression entre lrzip et 7zip sur un dossier contenant des vidéos et des pdf (pas le même dossier que celui utilisé pour les trois tests précédents malheureusement, ceux-ci ayant été réalisé il y a quelques années). J'ai pu constater que le taux de compression était quasiment identique, mais avec une rapidité de compression et de décompression BEAUCOUP plus importante pour 7zip.
* j'avais été bluffé par la capacité de lrzip à réduire la taille des vidéos d'environ 25%, mais 7zip en a fait tout autant.
* la syntaxe est suffisamment simple à mon goût.
* aisément disponible sur toutes les plateformes.
==== Syntaxe ====
* Compresser un fichier ou un dossier : ''7z a archive.7z chemin/vers/fichier_ou_dossier''
* Extraire une archive vers la destination donnée : ''7z x archive.7z -ochemin/vers/destination''