in

Comment compresser ou décompresser des fichiers à partir du terminal Linux

Fatmawati Achmad Zaenuri / Shutterstock.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 de terminal Linux courantes.

Le format de fichier archive compressé ZIP

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

Alors que les fichiers .tar.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.

zip, décompresser et autres utilitaires

Vous savez peut-être déjà que les systèmes d’exploitation de type Linux et Unix tels que macOS disposent d’outils vous permettant 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 zipcloak, zipdetails, zipsplit , et zipinfo.

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 le 18.04. Fedora 29 inclus 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

Commande d'installation Zip dans Centos

Si l’un des utilitaires zip manque dans une distribution Linux qui n’a pas été mentionnée ci-dessus, utilisez l’outil de gestion de paquet 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 dire zip le nom du fichier d’archive et les fichiers à y inclure. Vous n’avez pas besoin d’ajouter l’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 dans le répertoire courant, vous utiliseriez cette commande:

zip source_code *.c *.h

Chaque fichier est répertorié au fur et à mesure de son ajout. Le nom du fichier et la quantité de compression obtenue sur ce fichier sont affichés.

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

ls -l source_code.zip

Si vous ne voulez pas voir la sortie de zip lors de la création du fichier ZIP, utilisez le -q (silencieux) option.

zip -q source_code *.c *.h

Inclure des répertoires dans des fichiers ZIP

Pour inclure des sous-répertoires dans le fichier ZIP, utilisez le -r (récursif) et incluez le nom du sous-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

Pour être attentif à la personne qui extraira les fichiers du fichier ZIP que vous créez, il est souvent poli de créer des fichiers ZIP contenant les fichiers contenus dans un répertoire. Lorsque la personne qui reçoit le fichier ZIP l’extrait, tous les fichiers sont placés proprement dans un répertoire sur leur ordinateur.

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

zip -r -q source_code work/

Réglage du niveau de compression

Vous pouvez définir le niveau de compression appliqué aux fichiers lors de leur ajout à l’archive ZIP. La plage va de 0 à 9, 0 étant aucune compression du tout. Plus la compression est élevée, plus la création du fichier ZIP est longue. Pour les fichiers ZIP de taille modeste, le décalage horaire n’est pas une pénalité significative. 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 zip pour 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/

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

zip -r -q source_code work/

Le niveau de compression maximal est le niveau 9.

zip -9 -r -q source_code work/

Avec la sélection de fichiers et de répertoires archivés ici, la différence entre aucune compression (niveau 0) et la compression par défaut (niveau 6) est de 400 Ko. 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 ajouterait à un gain de place intéressant.

Ajout de mots de passe aux fichiers ZIP

L’ajout de mots de passe aux fichiers ZIP est facile. Utilisez le -e (chiffrer) et vous serez invité à entrer votre mot de passe et à le ressaisir pour vérification.

zip -e -r -q source_code work/

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 l’extension «.zip».

unzip source_code.zip

Au fur et à mesure que les fichiers sont extraits, ils sont répertoriés dans la fenêtre du terminal.

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

Juste comme zip, unzip a un -q (silencieux), de sorte que vous n’ayez pas besoin de voir la liste des fichiers lorsque les fichiers sont extraits.

unzip -q source_code.zip

Extraction de fichiers dans un répertoire cible

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

unzip -q source_code.zip -d ./development

Extraire les 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

Si vous ne vous souciez pas du fait que votre mot de passe soit vu par d’autres personnes, 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

Exclusion de fichiers

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

unzip -q source_code.zip -x *.h

Écraser des fichiers

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

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’avant, unzip vous invitera à prendre une décision concernant l’écrasement des fichiers. Il attendra l’une des réponses suivantes.

Séparé de r (renommer), ces réponses sont sensibles à la casse.

  • y: Oui, écraser ce fichier
  • n: Non, n’écrasez pas ce fichier
  • UNE: Tous, écraser tous les fichiers
  • N: Aucun, n’écrase aucun des fichiers
  • r: Renommez, extrayez ce fichier mais donnez-lui un nouveau nom. Vous serez invité à entrer un nouveau nom.

Forcer unzip pour écraser les fichiers existants, utilisez le -o (écraser).

unzip -o -q source_code.zip

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

unzip -n source_code.zip

Regarder à l’intérieur d’un fichier ZIP

Il est souvent utile et instructif de voir une liste des fichiers dans un fichier ZIP avant de l’extraire. Vous pouvez le faire avec le -l (liste des archives) option. Il est canalisé less pour rendre la sortie gérable.

unzip -l source_code.zip | less

La sortie affiche les répertoires et les fichiers contenus dans le 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.

Il existe d’autres façons de jeter un œil à l’intérieur d’un fichier ZIP qui donne 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 ajouter rapidement un mot de passe au fichier ZIP en utilisant le zipcloak commander. Passez le nom du fichier ZIP sur la ligne de commande. Vous serez invité à entrer un mot de passe. Vous devez vérifier le mot de passe en le saisissant une seconde fois.

zipcloak source_code.zip

Afficher les détails du fichier avec la commande zipdetails

le zipdetails La commande vous montrera une des informations concernant le fichier ZIP. La seule façon raisonnable de gérer la quantité de sortie que cette commande peut donner est de la canaliser less .

zipdetails source_code.zip | less

Notez que les informations incluront les 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étadonnées et ne fait pas partie des données cryptées.

Rechercher dans le fichier avec la commande zipgrep

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

zipgrep keyval.h source_code.zip

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

Afficher les informations avec la commande zipinfo

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

zipinfo source_code.zip | less

De gauche à droite, la sortie affiche:

  • Les autorisations de 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égonflage, dans ce cas)
  • Les données et l’horodatage
  • Le nom du fichier et n’importe quel répertoire

Le descripteur de fichier 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 chiffré. Le deuxième caractère peut être l’un des quatre caractères. Ce caractère représente le type de métadonnées inclus pour ce fichier: aucune, un en-tête local étendu, un «champ supplémentaire», ou les deux.

  • -: Si ni l’un ni l’autre 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

Fractionner 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 avec la transmission du fichier, vous pouvez utiliser le zipsplit commande pour diviser le fichier ZIP d’origine en un ensemble de fichiers ZIP plus petits.

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

zipsplit -n 102400 source_code.zip

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 eux sans jamais quitter le terminal Linux.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment ajouter un co-hôte à une réunion Zoom

Comment ajouter un co-hôte à une réunion Zoom

Comment puis-je obtenir une meilleure réception Wi-Fi à l'extérieur?

Comment puis-je obtenir une meilleure réception Wi-Fi à l’extérieur?