Articles

Comment compresser ou Décompresser des Fichiers À partir du Terminal Linux

  • Dave McKay

    @TheGurkha

  • Mise à jour le 28 mai 2019 à 17h15 HAE
Invite de shell Linux
Fatmawati Achmad Zaenuri/.com

Les fichiers ZIP sont une archive universelle couramment utilisée sur les systèmes Windows, macOS et même Linux. Vous pouvez créer une archive zip ou décompresser des fichiers à partir d’une archive avec certaines commandes courantes du terminal Linux.

Le Format de fichier d’archive Compressé ZIP

Grâce à la domination du format ZIP dans le domaine Windows, les fichiers ZIP sont probablement la forme d’archive compressée la plus courante au monde.

Pendant.tar.les fichiers gz et tar.bz2 sont courants sous Linux, les utilisateurs de Windows vous enverront probablement une archive au format ZIP. Et, si vous souhaitez archiver certains fichiers et les envoyer à un utilisateur Windows, le format ZIP sera la solution la plus simple et la plus compatible pour tout le monde.

LIÉS: Comment extraire des fichiers D’un.tar.gz ou.tar.fichier bz2 sous Linux

zip, décompression et autres utilitaires

Vous savez peut-être déjà que les systèmes d’exploitation de type Linux et Unix tels que macOS ont des outils pour vous permettre de créer des fichiers ZIP et d’en extraire des fichiers, appelés zip et unzip. Mais il existe toute une famille d’utilitaires connexes tels que zipcloakzipdetailszipsplit, et zipinfo.

Publicité

Nous avons vérifié certaines distributions Linux pour voir si elles incluaient ces utilitaires dans l’installation standard. Tous les utilitaires étaient présents dans Ubuntu 19.04, 18.10 et 18.04. Ils étaient également présents à Manjaro 18.04. Fedora 29 incluait zip et unzip, mais aucun des autres utilitaires et c’était également le cas pour CentOS.

Pour installer les éléments manquants sur Fedora 29, utilisez la commande suivante:

sudo dnf install perl-IO-Compress

commande d'installation zip pour Fedora

Pour installer les éléments manquants sur CentOS 7, utilisez la commande suivante :

sudo yum install perl-IO-Compress

Zip commande install dans Centos

Advertisement

Si l’un des utilitaires zip est manquant dans une distribution Linux qui n’a pas été mentionnée ci-dessus, utilisez l’outil de gestion des paquets de cette distribution Linux pour installer le paquet requis.

Comment créer un fichier ZIP avec la commande zip

Pour créer un fichier ZIP, vous devez indiquer à ziple nom du fichier d’archive et les fichiers à y inclure. Vous n’avez pas besoin d’ajouter le « .extension zip » au nom de l’archive, mais cela ne fait aucun mal si vous le faites.

Pour créer un fichier appelé source_code.zip contenant tous les fichiers de code source C et les fichiers d’en-tête du répertoire courant, vous utiliseriez cette commande :

zip source_code *.c *.h

commande zip dans une fenêtre de terminal

Chaque fichier est répertorié tel qu’il est ajouté. Le nom du fichier et la quantité de compression obtenue sur ce fichier sont affichés.

sortie de la commande zip dans une fenêtre de terminal

Publicité

Si vous regardez la nouvelle archive ZIP, vous pouvez voir que le « .l’extension de fichier zip” a été ajoutée automatiquement par zip.

ls -l source_code.zip

ls sur l'archive zip dans une fenêtre de terminal

Si vous ne voulez pas voir la sortie de ziplorsque le fichier ZIP est créé, utilisez le -q option div> (silencieux).

zip -q source_code *.c *.h

- q option silencieuse dans une fenêtre de terminal

Incluant des répertoires dans des fichiers ZIP

Pour inclure des sous-répertoires dans le fichier ZIP, utilisez l’option -r (récursive) et incluez le nom du sous-répertoire – répertoire sur la ligne de commande. Pour créer un fichier ZIP comme précédemment et inclure également le sous-répertoire archive, utilisez cette commande.

zip -r -q source_code archive/ *.c *.h

-r option récursive dans une fenêtre de terminal

Pour être attentionné envers la personne qui extraira les fichiers du fichier ZIP que vous créez, il est souvent poli de créer des fichiers ZIP avec les fichiers qu’il contient dans un répertoire. Lorsque la personne qui reçoit le fichier ZIP l’extrait, tous les fichiers sont soigneusement placés dans un répertoire de leur ordinateur.

Advertisement

Dans la commande suivante, nous allons archiver le répertoire work et tous les sous-répertoires. Notez que cette commande est émise à partir du répertoire parent du dossier work.

zip -r -q source_code work/

Fermeture éclair du répertoire de travail dans une fenêtre de terminal

Réglage du niveau de compression

Vous pouvez définir la quantité de compression appliquée aux fichiers lorsqu’ils sont ajoutés à l’archive ZIP. La plage est de 0 à 9, 0 n’étant aucune compression. Plus la compression est élevée, plus il faut de temps pour créer le fichier ZIP. Pour les fichiers ZIP de taille modeste, le décalage horaire n’est pas une pénalité importante. Mais alors, pour les fichiers ZIP de taille modeste, la compression par défaut (niveau 6) est probablement suffisante de toute façon.

Pour obtenir zippour utiliser un niveau de compression spécifique, passez le nombre en option sur la ligne de commande, avec un « -« , comme ceci:

zip -0 -r -q source_code work/

-0 option de compression dans une fenêtre de terminal

Le niveau de compression par défaut est 6. Il n’est pas nécessaire de fournir l’option -6, mais cela ne fera aucun mal si vous le faites.

zip -r -q source_code work/

compression de niveau 6 dans une fenêtre de terminal

Le niveau de compression maximum est le niveau 9.

zip -9 -r -q source_code work/

-9 compression dans une fenêtre de terminal

Publicité

Avec la sélection des fichiers et répertoires archivés ici, la différence entre aucune compression (niveau 0) et la compression par défaut (niveau 6) est de 400K. La différence entre la compression par défaut et le niveau de compression le plus élevé (niveau 9) n’est que de 4K.

Cela peut sembler peu, mais pour les archives contenant des centaines, voire des milliers de fichiers, la petite quantité de compression supplémentaire par fichier représenterait un gain de place intéressant.

Ajouter des mots de passe aux fichiers ZIP

Ajouter des mots de passe aux fichiers ZIP est facile. Utilisez l’option -e (chiffrer) et vous serez invité à saisir votre mot de passe et à le saisir à nouveau pour vérification.

zip -e -r -q source_code work/

Ajout de mots de passe à des fichiers zip dans une fenêtre de terminal

Comment Décompresser un fichier ZIP Avec la commande unzip

Pour extraire les fichiers d’un fichier ZIP, utilisez la commande unzip et indiquez le nom du fichier ZIP. Notez que vous devez fournir le « .extension ”zip ».

unzip source_code.zip

la commande de décompression dans une fenêtre de terminal

Publicité

Lorsque les fichiers sont extraits, ils sont répertoriés dans la fenêtre de terminal.

sortie de décompression dans une fenêtre de terminal

Les fichiers ZIP ne contiennent pas de détails sur la propriété du fichier. Tous les fichiers extraits ont le propriétaire défini sur l’utilisateur qui les extrait.

Tout comme zipunzip a une option -q (quiet), de sorte que vous n’avez pas besoin de voir la liste des fichiers lorsque les fichiers sont extraits.

unzip -q source_code.zip

option unzip-q dans une fenêtre de terminal

Extraction de fichiers dans un répertoire cible

Pour extraire les fichiers dans un répertoire spécifique, utilisez l’option -d(directory), et indiquez le chemin d’accès au répertoire dans lequel vous souhaitez extraire l’archive.

unzip -q source_code.zip -d ./development

décompressez dans un répertoire cible dans une fenêtre de terminal

Extraire des fichiers ZIP protégés par mot de passe

Si un fichier ZIP a été créé avec un mot de passe, unzip vous demandera le mot de passe. Si vous ne fournissez pas le mot de passe correct, unzip n’extraira pas les fichiers.

unzip -q source_code.zip

la commande décompresser avec mot de passe dans une fenêtre de terminal

Publicité

Si vous ne vous souciez pas que votre mot de passe soit vu par les autres — ni qu’il soit stocké dans votre historique de commandes — vous pouvez fournir le mot de passe sur la ligne de commande avec le -P (mot de passe) option. (Vous devez utiliser un « P » majuscule.”)

unzip -P fifty.treacle.cutlass -q source_code.zip

décompression avec l'option de mot de passe dans une fenêtre de terminal

Exclure des fichiers

Si vous ne souhaitez pas extraire un fichier ou un groupe de fichiers particulier, utilisez l’option -x (exclure). Dans cet exemple, nous voulons extraire tous les fichiers à l’exception de ceux se terminant par un « .extension h”.

unzip -q source_code.zip -x *.h

décompressez l'option exclure dans une fenêtre de terminal

Écrasement des fichiers

Supposons que vous ayez extrait une archive mais que vous ayez supprimé quelques-uns des fichiers extraits par erreur.

Publicité

Une solution rapide pour cela serait d’extraire à nouveau les fichiers. Mais si vous essayez d’extraire le fichier ZIP dans le même répertoire qu’auparavant, unzip vous demandera une décision concernant l’écrasement des fichiers. Il s’attendra à l’une des réponses suivantes.

Mis à part la réponse r (rename), ces réponses sont sensibles à la casse.

  • y: Oui, écrasez ce fichier
  • n: Non, n’écrasez pas ce fichier
  • A: Tout, écrasez tous les fichiers
  • N: Aucun, écrasez aucun des fichiers
  • r: Renommez, extrayez ce fichier mais donnez-lui un nouveau nom. Un nouveau nom vous sera demandé.

les invites d'écrasement dans une fenêtre de terminal

Pour forcer unzip à écraser tous les fichiers existants, utilisez l’option -o (écraser).

unzip -o -q source_code.zip

option d'écrasement dans une fenêtre de terminal

Le moyen le plus efficace de remplacer les fichiers manquants serait d’avoir unzip extrait uniquement les fichiers de l’archive qui ne sont pas dans le répertoire cible. Pour ce faire, utilisez l’option -n (ne jamais écraser).

unzip -n source_code.zip

décompressez avec l'option -n ne jamais écraser dans une fenêtre de terminal

En regardant à l’intérieur d’un fichier ZIP

Il est souvent utile et instructif de voir une liste des fichiers à l’intérieur d’un fichier ZIP avant de l’extraire. Vous pouvez le faire avec l’option -l (archive de liste). Il est acheminé par less pour rendre la sortie gérable.

unzip -l source_code.zip | less

décompressez l'option de listing dans une fenêtre de terminal

Publicité

La sortie affiche les répertoires et fichiers du fichier ZIP, leur longueur ainsi que l’heure et la date à laquelle ils ont été ajoutés à l’archive. Appuyez sur « q » pour quitter less.

lister la sortie de l'archive dans une fenêtre de terminal

Il existe d’autres façons de jeter un coup d’œil à l’intérieur d’un fichier ZIP qui donnent différents types d’informations, comme nous le verrons.

Ajouter un mot de passe Avec la commande zipcloak

Si vous avez créé un fichier ZIP mais que vous avez oublié d’ajouter un mot de passe, que pouvez-vous faire ? Vous pouvez rapidement ajouter un mot de passe au fichier ZIP à l’aide de la commande zipcloak. Passez le nom du fichier ZIP sur la ligne de commande. Un mot de passe vous sera demandé. Vous devez vérifier le mot de passe en le saisissant une deuxième fois.

zipcloak source_code.zip

zipcloak dans une fenêtre de terminal

Afficher les détails du fichier Avec la commande zipdetails

La commande zipdetails vous montrera beaucoup d’informations concernant le fichier ZIP. La seule façon sensée de gérer la quantité de sortie que cette commande peut donner est de la canaliser via less.

zipdetails source_code.zip | less

la commande zipdetails dans une fenêtre de terminal

Publicité

Notez que les informations incluront des noms de fichiers même si le fichier ZIP est protégé par mot de passe. Ce type d’informations est stocké dans le fichier ZIP sous forme de méta-données et ne fait pas partie des données cryptées.

sortie de zipdetails dans une fenêtre de terminal

Recherche dans le fichier Avec la commande zipgrep

La commande zipgrep vous permet de rechercher dans les fichiers d’un fichier ZIP. Dans l’exemple suivant, nous voulons savoir quels fichiers dans le fichier ZIP ont le texte « keyval.h » en eux.

zipgrep keyval.h source_code.zip

la commande zipgrep dans une fenêtre de terminal

On peut voir que les fichiers slang.c et getval.c contiennent la chaîne « keyval .h”.Nous pouvons également voir qu’il y a deux copies de chacun de ces fichiers dans des répertoires différents dans le fichier ZIP.

Afficher les informations Avec la commande zipinfo

La commande zipinfo vous donne encore une autre façon de regarder à l’intérieur d’un fichier ZIP. Comme précédemment, nous acheminons la sortie via less.

zipinfo source_code.zip | less

commande zipinfo dans une fenêtre de terminal

De gauche à droite, la sortie affiche:

  • Les autorisations du fichier
  • La version de l’outil utilisé pour créer le fichier ZIP
  • La taille du fichier d’origine
  • Un descripteur de fichier (décrit ci-dessous)
  • La méthode de compression (déflation, dans ce cas)
  • Les données et l’horodatage
  • Le nom du fichier et de tout répertoire
Publicité

Le fichier le descripteur est composé de deux caractères. Le premier caractère sera un « t » ou un ”b » pour indiquer un fichier texte ou binaire. S’il s’agit d’une majuscule, le fichier est crypté. Le deuxième caractère peut être l’un des quatre caractères. Ce caractère représente le type de méta-données incluses pour ce fichier : aucun, un en-tête local étendu, un « champ supplémentaire”, ou les deux.

  • -: Si aucun des deux n’existe, le caractère sera un trait d’union
  • l: s’il y a un en-tête local étendu mais pas de champ supplémentaire
  • x: s’il n’y a pas d’en-tête local étendu mais qu’il y a un champ supplémentaire
  • X: s’il y a un en-tête local étendu et qu’il y a un champ supplémentaire

sortie zipinfo dans une fenêtre de terminal

Divisez le fichier Avec la commande zipsplit

Si vous devez envoyer le fichier ZIP à quelqu’un d’autre mais qu’il y a des restrictions de taille ou des problèmes de transmission du fichier, vous pouvez utiliser le zipsplit commande pour diviser le fichier ZIP d’origine en un ensemble de fichiers ZIP plus petits.

L’option -n (taille) vous permet de définir une taille maximale pour chacun des nouveaux fichiers ZIP. Dans cet exemple, nous divisons le fichier source_code.zip. Nous ne voulons pas que les nouveaux fichiers ZIP dépassent 100 Ko (102400 octets).

zipsplit -n 102400 source_code.zip

la commande zipsplit dans une fenêtre de terminal

Publicité

La taille que vous choisissez ne peut pas être inférieure à la taille de l’un des fichiers du fichier ZIP.

En utilisant ces commandes, vous pouvez créer vos propres fichiers ZIP, décompresser les fichiers ZIP que vous recevez et effectuer diverses autres opérations sur ceux-ci sans jamais quitter le terminal Linux.

Dave McKay
Dave McKay a utilisé pour la première fois des ordinateurs lorsque le ruban de papier perforé était en vogue, et il programme depuis. Après plus de 30 ans dans l’industrie informatique, il est maintenant journaliste technologique à temps plein. Au cours de sa carrière, il a travaillé en tant que programmeur indépendant, responsable d’une équipe internationale de développement de logiciels, chef de projet de services informatiques et, plus récemment, en tant que Délégué à la protection des données. Dave est un évangéliste Linux et un défenseur de l’open source.Lire la Bio complète «