Comment compresser et décompresser des fichiers à l’aide de tar sous Linux – –

Shutterstock / iunewind

Tar est plus qu’un simple utilitaire d’archivage: tar est livré avec de superbes fonctionnalités intégrées, qui vous permettent de compresser et de décompresser des fichiers, tout en les archivant. Apprenez-en plus dans cet article et plus encore!

Qu’est-ce que tar et comment l’installer?

Selon le manuel tar (auquel vous pouvez accéder en tapant man tar une fois qu’il est installé), tar est un utilitaire d’archivage. Il prend en charge de nombreuses fonctionnalités, notamment la compression et la décompression des fichiers à la volée lors de leur archivage. Commençons par installer tar:

Pour installer tar sur votre distribution Linux basée sur Debian / Apt (comme Ubuntu et Mint), exécutez la commande suivante dans votre terminal:

sudo apt installer tar

Pour installer tar sur votre distribution Linux basée sur RedHat / Yum (comme RHEL, Centos et Fedora), exécutez la commande suivante dans votre terminal:

sudo yum installer tar

Ensuite, nous allons créer des exemples de données:

mkdir test; cd test
touch a b c d e f 
echo 1 > a; echo 5 > e; echo '22222222222222222222' > b

Configuration des exemples de données à compresser

Ici, nous avons créé un test de répertoire et créé six fichiers vides en utilisant la commande tactile. Nous avons également ajouté des numéros aux fichiers a, e et b, bien que notamment le fichier b contienne des données répétitives, qui se compresseront bien.

Si vous souhaitez en savoir plus sur le fonctionnement de la compression, vous pouvez consulter notre Comment fonctionne la compression de fichiers? article.

Création d’une archive non compressée

Création simple d'une archive tar non compressée

tar -hcf all_files.tar *
ls -l | grep -v total | awk '{print $5"tbytes for: "$9}' | sort -n

Ici, nous avons créé une archive non compressée à l’aide de la commande tar -hcf all_files.tar *. Jetons un coup d’œil aux options utilisées dans cette commande.

  Comment sauvegarder les sauvegardes de jeu Retroarch sur Linux

Premièrement, nous avons -h qui, bien que non requis dans ce cas particulier, je recommande fortement de toujours inclure dans vos commandes tar. Cette option signifie déréférencement, qui déréférencera (ou suivra) les liens symboliques, archivera et videra les fichiers vers lesquels ils pointent.

Ensuite, nous avons les options -c et -f. Notez qu’ils sont juste écrits avec le – dans -h, c’est-à-dire qu’au lieu d’en spécifier un autre, nous les marquons simplement sur les autres options abrégées. Rapide et facile.

L’option -c signifie créer une nouvelle archive. Notez que par défaut, les répertoires sont archivés de manière récursive, sauf si une option –no-récursivité est également utilisée. L’option -f nous permet de spécifier le nom de l’archive. Il doit donc venir en dernier dans notre chaîne d’options (car il nécessite une option) afin que nous puissions ajouter le nom du fichier d’archive directement derrière lui. L’utilisation de tar -fch test.tar * ne fonctionnera pas:

Les options de sténographie qui nécessitent une option ne peuvent pas être placées à l'avant

Une fois le tar généré, nous utilisons une sortie ls modifiée qui nous montre clairement le nombre d’octets par fichier. Comme vous pouvez le voir, le fichier tar est beaucoup plus volumineux que tous nos fichiers combinés. Les fichiers sont simplement archivés et une surcharge globale pour tar est ajoutée.

Comme remarque intéressante, nous pouvons également voir quels types de fichiers fonctionnaient en utilisant simplement la commande file à l’invite de commande:

file c
file b
file all_files.tar

Utilisation du fichier pour voir le type de fichier

Création d’une archive non compressée

Un algorithme de compression très courant est GZIP. Ajoutons l’option pour le même (-z) à notre chaîne d’options de ligne de commande abrégée et voyons comment cela affecte la taille du fichier:

tar -zhcf all_files.tar.gz [a-f]
ls -l | grep -v total | awk '{print $5"tbytes for: "$9}' | sort -n

Examen de la taille d'une archive compressée par rapport à une archive non compressée

Cette fois, nous avons spécifié une expression régulière pour n’utiliser que les fichiers avec le nom a à f, empêchant la commande tar d’inclure le fichier all_files.tar dans le nouveau fichier all_files.tar.gz!

  Comment vérifier si votre système prend en charge HDR sur Windows 10

Voir Comment utilisez-vous réellement Regex? et Modifier le texte à l’aide d’expressions régulières à l’aide de sed si vous souhaitez en savoir plus sur les expressions régulières.

Nous avons également inclus l’option -z qui utilisera la compression GZIP pour compresser le fichier .tar résultant une fois le vidage des données terminé. C’est formidable de voir que nous nous retrouvons avec un fichier de 186 octets, ce qui nous dit que – dans ce cas – l’en-tête / surcharge tar d’environ 10 Ko peut être très bien compressé.

La taille totale de l’archive est 7,44 fois plus grande que la taille totale du fichier, mais cela n’a pas d’importance car cet exemple fictif n’est pas représentatif de la compression de gros fichiers où des gains au lieu de pertes sont presque toujours visibles, à moins que les données aient été précompressées ou ne soient d’un format tel qu’il ne peut pas être condensé facilement en utilisant une variété d’algorithmes. Pourtant, un algorithme (comme celui de GZIP) peut être meilleur qu’un autre (comme par exemple BZIP2), et vice versa, pour différents ensembles de données.

Gagner plus d’octets en utilisant la compression de haut niveau

Pouvons-nous rendre le fichier encore plus petit? Oui. Nous pouvons définir l’option de compression maximale de GZIP en utilisant l’option -I sur tar qui nous permet de spécifier un programme de compression à utiliser (avec grâce à stackoverflow user ideasman42):

tar -I 'gzip -9' -hcf all_files.tar.gz [a-f]
ls -l | grep -v total | awk '{print $5"tbytes for: "$9}' | sort -n

Utilisation de l'option -I pour tar pour spécifier un programme de compression

Ici, nous avons spécifié -I ‘gzip -9’ comme programme de compression à utiliser, et nous avons supprimé l’option -z (car nous spécifions maintenant un programme personnalisé spécifique à utiliser au lieu d’utiliser la configuration tar GZIP intégrée). Le résultat est que nous avons 12 octets de moins grâce à une meilleure tentative de compression (mais généralement plus lente) (au niveau -9) par GZIP.

De manière générale, plus la compression est rapide (faible niveau de tentatives de compression, c’est-à-dire -1), plus la taille du fichier est importante. Et, plus la compression est lente (niveau plus élevé de tentatives de compression, c’est-à-dire -9), plus le fichier est petit. Vous pouvez définir vos propres préférences en faisant varier le niveau de compression de -1 (rapide) à -9 (lent)

  Comment empêcher Windows 10 de rouvrir vos applications précédentes après le redémarrage de votre PC

Autres programmes de compression

Il existe deux autres algorithmes de compression courants que l’on peut explorer et tester (différentes options d’algorithme donnent également des résultats de dimensionnement différents et peuvent avoir des options de compression supplémentaires), et c’est bzip2, qui peut être utilisé en spécifiant l’option -j à tar, et XZ qui peut être utilisé en spécifiant l’option -J.

Vous pouvez également utiliser la commande -I pour définir les options de compression maximales pour bzip2 (-9):

Exemple de programme de compression bzip -9

Et -9e pour xz:

exemple de programme de compression xz -9e

Comme vous pouvez le voir, les résultats sont moins bons dans ce cas qu’en utilisant l’algorithme GZIP quelque peu standard. Pourtant, les algorithmes bzip2 et xz peuvent montrer des améliorations avec d’autres ensembles de données.

Décompresser un fichier

La décompression d’un fichier est super facile, quelle que soit la méthode originale pour le compresser, et à condition qu’un tel algorithme de compression soit présent sur votre ordinateur. Par exemple, si l’algorithme de compression d’origine était bzip2 (indiqué par une extension .bz2 du nom de fichier tar), alors vous voudrez avoir fait sudo apt installer bzip2 (ou sudo yum install bzip2) sur votre ordinateur cible qui doit décompresser le déposer.

rm a b c d e f
tar -xf all_files.tar.gz
ls

Décompression d'une archive tar compressée (ou non compressée)

Nous spécifions simplement -x pour développer ou décompresser notre fichier all_files.tar.gz, et indiquer le nom du fichier en utilisant à nouveau l’option abrégée -f comme précédemment.

La compression de fichiers peut vous aider à économiser beaucoup d’espace sur vos périphériques de stockage, et savoir comment utiliser tar en combinaison avec les options de compression disponibles vous aidera à le faire. Une fois l’archive à extraire à nouveau, il est facile de le faire à condition que le logiciel de décompression approprié soit disponible sur l’ordinateur utilisé pour décompresser ou extraire les données de votre archive. Profitez!