Comment compresser ou Décompresser des Fichiers À partir du Terminal Linux
- Dave McKay
@TheGurkha
- Mise à jour le 28 mai 2019 à 17h15 HAE
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 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 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
Pour installer les éléments manquants sur CentOS 7, utilisez la commande suivante :
sudo yum install perl-IO-Compress
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 à zip
le 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
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.
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
Si vous ne voulez pas voir la sortie de zip
lorsque le fichier ZIP est créé, utilisez le -q
option div> (silencieux).
zip -q source_code *.c *.h
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
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.
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/
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 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 l’option -6
, mais cela ne fera aucun mal si vous le faites.
zip -r -q source_code work/
Le niveau de compression maximum est le niveau 9.
zip -9 -r -q source_code work/
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/
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
Lorsque les fichiers sont extraits, ils sont répertoriés dans la 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 zip
unzip
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
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
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
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
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
Écrasement 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’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é.
Pour forcer unzip
à écraser tous les fichiers existants, utilisez l’option -o
(écraser).
unzip -o -q source_code.zip
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
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
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
.
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
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
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.
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
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
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
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
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 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 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 «
Leave a Reply