Comment compresser et décompresser des fichiers à l’aide de tar sous Linux –
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 décompresser des fichiers, tout en les archivant. Apprenez-en plus dans cet article et plus encore!
Sommaire
Quel est le goudron et comment l’installer?
Selon le le goudron manuel (auquel vous pouvez accéder en tapant man tar
une fois 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 le goudron:
À installer le goudron sur votre distribution Linux basée sur Debian / Apt (comme Ubuntu et Mint), exécutez la commande suivante dans votre terminal:
sudo apt install tar
À installer le goudron sur votre distribution Linux basée sur RedHat / Yum (comme RHEL, Centos et Fedora), exécutez la commande suivante dans votre terminal:
sudo yum install 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
Ici, nous avons créé un test de répertoire, et créé six fichiers vides en utilisant le touch
commander. Nous avons également ajouté des numéros aux fichiers une, e, et b, mais notamment fichier b a 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 page Comment fonctionne la compression de fichiers? article.
Création d’une archive 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 en utilisant le tar -hcf all_files.tar *
commander. Jetons un coup d’œil aux options utilisées dans cette commande.
Premièrement, nous avons -h
qui, bien que non requis dans ce cas particulier, je recommande fortement de toujours inclure dans votre tar
commandes. Cette option signifie déréférencer, qui déréférencera (ou suivra) les liens symboliques, archivera et videra les fichiers vers lesquels ils pointent.
Ensuite, nous avons le -c
et -f
options. Notez qu’ils sont simplement écrits avec le -
dans -h
, c’est-à-dire au lieu de spécifier un autre -
, nous les marquons simplement sur les autres options abrégées. Rapide et facile.
le -c
option représente 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. le -f
L’option 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. En utilisant tar -fch test.tar *
ne fonctionnera pas:
Une fois le tar généré, nous utilisons un ls
sortie 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 certains frais généraux le goudron est ajouté.
Comme remarque intéressante, nous pouvons également voir quels types de fichiers travaillaient en utilisant simplement le file
commande à l’invite de commande:
file c file b file all_files.tar
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 voyez 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
Cette fois, nous avons spécifié une expression régulière pour n’utiliser que les fichiers avec le nom une à F, empêchant le tar
commande d’inclure le all_files.tar
fichier dans le nouveau all_files.tar.gz
fichier!
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 le -z
option qui utilisera la compression GZIP pour compresser le résultat .tar
fichier 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 – le tar
l’en-tête / surcharge d’environ 10 Ko peuvent être très bien compressés.
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, sauf si les données ont été précompressées ou sont 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 le -I
option pour tar
ce 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
Ici nous avons spécifié -I 'gzip -9'
comme programme de compression à utiliser, et nous avons supprimé le -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 suite à 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 (moins de tentatives de compression, c’est-à-dire -1
), plus la taille du fichier est élevée. 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)
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 le -j
option pour tar
, et XZ qui peut être utilisé en spécifiant le -J
option.
Vous pouvez également utiliser le -I
commande pour définir les options de compression maximales pour bzip2
(-9
):
Et -9e
pour xz
:
Comme vous pouvez le voir, les résultats sont moins bons dans ce cas qu’en utilisant l’algorithme GZIP quelque peu standard. Pourtant, le bzip2
et xz
les algorithmes 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 un .bz2
extension du nom de fichier tar), alors vous voudrez avoir fait sudo apt install bzip2
(ou sudo yum install bzip2
) sur votre ordinateur cible qui doit décompresser le fichier.
rm a b c d e f tar -xf all_files.tar.gz ls
Nous spécifions simplement -x
à développer ou décompressez notre all_files.tar.gz
et indiquez le nom du fichier en utilisant à nouveau le -f
option de sténographie comme avant.
La compression de fichiers peut vous aider à économiser beaucoup d’espace sur vos périphériques de stockage et à savoir comment l’utiliser tar
en combinaison avec les options de compression disponibles vous aidera à le faire. Une fois que l’archive doit être extraite à 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. Prendre plaisir!