GNU/Linux >> Tutoriels Linux >  >> Linux

Comment archiver et compresser des fichiers sous Linux

En tant qu'administrateur système, vous avez peut-être téléchargé des archives que vous devez extraire afin de révéler leurs fichiers.

Vous pouvez également sauvegarder une base de données entière constitué d'une grande variété de petits fichiers que vous souhaitez agréger en une seule archive.

Archivage et compresser les fichiers sont des opérations courantes dans le monde Unix, effectuées très régulièrement par les administrateurs système.

Heureusement pour vous, Linux expose un ensemble de commandes différentes afin d'archiver, compresser, décompresser et extraire des fichiers d'une archive.

Dans ce tutoriel, vous en apprendrez plus sur la commande tar ainsi que sur les différentes méthodes de compression qui peuvent être utilisées afin d'économiser de l'espace sous Linux.

Prêt ?

Archive des fichiers sur Linux en utilisant tar

Tar est une commande très populaire parmi les administrateurs système.

Parfois appelé tarball , tar était historiquement utilisé pour écrire des données sur des appareils qui n'avaient pas de système de fichiers à l'époque.

En conséquence, la commande tar a été introduite en 1979 afin de remplacer le "tp ” programme qui était utilisé à l'époque.

De nos jours, la commande tar est largement utilisé pour archiver des fichiers (c'est-à-dire rassembler des fichiers dans une seule archive).

Pour archiver des fichiers sur Linux à l'aide de tar, exécutez "tar » avec le « cvf ” options.

$ tar -cvf archive.tar file1 file2 directory1 directory2

file1/
file2/
directory1/
directory2/

Dans ce cas, nous avons utilisé trois options différentes :

  • -c  :pour créer une archive, une option assez explicite si vous souhaitez créer une nouvelle archive à partir des fichiers sélectionnés ;
  • -v :pour verbose, c'est la raison pour laquelle la commande affiche les fichiers ajoutés à l'archive lors de son exécution;
  • -f :pour le fichier, cette option est utilisée afin de spécifier le nom de fichier de l'archive que nous voulons créer (dans ce cas archive.tar)

Ces options sont probablement les options les plus importantes pour l'archivage de fichiers sous Linux.

Lors de l'exécution de la commande tar avec le drapeau "-f", une nouvelle archive a été créée dans votre répertoire de travail actuel.

$ ls -l
total 20
-rw-rw-r-- 1 schkn schkn 10240 Nov  9 10:41 archive.tar
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory1
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory2
-rw-rw-r-- 1 schkn schkn     0 Nov  9 10:41 file1
-rw-rw-r-- 1 schkn schkn     0 Nov  9 10:41 file2

Comme vous pouvez le voir, la taille de l'archive est supérieure à la somme des fichiers qu'elle contient.

Pourquoi ?

La création d'une archive tar ne se contente pas de mettre les fichiers et les répertoires dans une grande boîte :une archive est également un fichier spécial composé d'en-têtes de fichiers spéciaux qui peuvent occuper une quantité importante d'espace.

Par conséquent, votre archive est bien plus grande que la somme des fichiers qu'elle contient.

C'est un fait très important car nous sommes en mesure de comprendre que l'archivage de fichiers ne signifie pas que vos fichiers y sont compressés.

Afin de compresser les fichiers lors de l'archivage, vous devez fournir d'autres options à la commande tar.

La compression de fichiers sera expliquée dans les chapitres suivants.

Extraire des fichiers à l'aide de tar sous Linux

Maintenant que vous avez créé un fichier d'archive, vous souhaiterez peut-être extraire les fichiers situés dans votre archive.

Pour extraire des fichiers à l'aide de la commande tar, ajoutez le "-x " au lieu de l'option "-c" initiale.

$ tar -xvf archive.tar

file1
file2
directory1/
directory2/

Notez que l'extraction de vos fichiers ne signifie pas que l'archive sera supprimée de votre répertoire de travail actuel.

$ ls -l

total 28
-rw-rw-r-- 1 schkn schkn 10240 Nov  9 12:01 archive.tar
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory1
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory2
-rw-rw-r-- 1 schkn schkn     0 Nov  9 12:00 file1
-rw-rw-r-- 1 schkn schkn     0 Nov  9 10:41 file2

Lors de l'extraction de fichiers sous Linux, il y a un petit piège dont vous devez être conscient.

Si un fichier du répertoire de travail actuel porte le même nom qu'un fichier de l'archive, le contenu du fichier du répertoire de travail sera remplacé par celui de l'archive.

Pour l'illustrer, ajoutez du contenu à l'un de vos fichiers, extrayez vos fichiers et réinspectez à nouveau le contenu de votre fichier.

$ echo "Added some content to the file" > file1

$ tar -xvf archive.tar

$ cat file1
<empty>

Comparer les fichiers locaux avec les fichiers d'archive

Afin d'éviter que les données ne soient effacées pendant le processus, la commande tar peut comparer les fichiers situé dans votre répertoire de travail actuel avec des fichiers dans votre archive.

Revenons à l'exemple dont nous avons parlé plus tôt, rajoutons du contenu au fichier "file1".

$ echo "Added some content to the file" > file1

Afin de comparer les fichiers avec tar, utilisez l'option "-d".

$ tar -dvf archive.tar

file1
file1: Mod time differs
file1: Size differs
file2
directory1/
directory2/

Comme vous pouvez le voir, tar comparera les horodatages et plus précisément la date de dernière modification du fichier.

Si la date de modification du fichier local est plus récente que celle du fichier d'archive, la commande tar affichera un avis indiquant que l'heure de modification diffère.

De même, tar peut inspecter la taille des fichiers et mettre en évidence les différences de taille entre vos fichiers.

Afin d'éviter d'effacer vos fichiers, vous pouvez utiliser l'étoile qui est une excellente alternative à la commande tar existante.

Empêcher l'écrasement des fichiers à l'aide d'une étoile

Par défaut, l'utilitaire star n'est peut-être pas installé sur votre système.

Pour installer l'utilitaire star, lancez l'utilitaire YUM

$ sudo yum install star

Ensuite, pour archiver des fichiers avec star, lancez simplement "star" avec l'option "-c".

$ star -c -f=archive.tar file1 file2

Ensuite, vous pouvez utiliser l'utilitaire gzip ou gunzip afin de compresser votre nouvelle archive.

$ gzip archive.tar

En conséquence, le fichier tar initial sera transformé en une archive tar.gz.

Maintenant, si vous deviez créer un fichier portant exactement le même nom, l'utilitaire star ne l'écraserait pas par défaut.

$ echo "This is some content" > file1

$ gzip -d archive.tar.gz

$ star -x -f=archive.tar
star: current 'file1' newer.
star: current 'file2' newer.
star: 1 blocks + 0 bytes (total of 10240 bytes = 10.00k).

$ cat file1
This is some content

Pratique quand on a peur de perdre son contenu !

Compresser des fichiers avec gzip sous Linux

Maintenant que votre archive tar est prête, la prochaine étape consiste à la compresser afin de réduire sa taille.

Pour cela, nous allons d'abord utiliser le gzip utilitaire.

Par défaut, l'utilitaire gzip devrait être installé, mais si ce n'est pas le cas, assurez-vous de l'installer en fonction de votre distribution.

$ sudo apt-get install gzip

$ sudo yum install gzip

Maintenant que gzip est installé, lancez "gzip" et transmettez l'archive que vous venez de créer comme argument.

$ gzip archive.tar

L'exécution de la commande gzip créera un tar.gz fichier dans le répertoire de travail courant.

Plus important encore, le fichier tar initial sera mis à niveau vers un tar.gz afin que vous n'ayez plus l'archive initiale.

$ ls -l
total 12
-rw-rw-r-- 1 schkn schkn  184 Nov  9 10:41 archive.tar.gz
drwxrwxr-x 2 schkn schkn 4096 Nov  9 10:41 directory1
drwxrwxr-x 2 schkn schkn 4096 Nov  9 10:41 directory2
-rw-rw-r-- 1 schkn schkn    0 Nov  9 10:41 file1
-rw-rw-r-- 1 schkn schkn    0 Nov  9 10:41 file2

Comme vous pouvez le voir, la taille du fichier a été considérablement réduite de 10 Ko à 184 octets, gzip a réduit la taille du fichier de plus de 98 %.

Cependant, si vous ne souhaitez pas utiliser l'utilitaire gzip, vous pouvez également compresser les fichiers à l'aide de la commande tar avec options.

Pensez-vous que cela peut améliorer le taux de compression ?

Compresser des fichiers sous Linux à l'aide de tar

Comme mentionné dans la première section, la commande tar peut être utilisée pour archiver et compresser des fichiers en une seule ligne.

Afin de compresser des fichiers avec tar, ajoutez simplement le "-z" option à votre ensemble d'options actuel.

$ tar -cvzf archive1.tar.gz file1 file2 directory1 directory2

Comme pour la première commande tar que vous avez exécutée, un nouveau fichier d'archive compressé sera créé dans votre répertoire de travail actuel.

Pour inspecter les fichiers créés, exécutez simplement la commande "ls" à nouveau.

$ ls -l
total 28
-rw-rw-r-- 1 schkn schkn   184 Nov  9 10:41 archive.tar.gz
-rw-rw-r-- 1 schkn schkn   172 Nov  9 11:10 archive1.tar.gz
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory1
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory2
-rw-rw-r-- 1 schkn schkn     0 Nov  9 10:41 file1
-rw-rw-r-- 1 schkn schkn     0 Nov  9 10:41 file2

Maintenant, comme vous pouvez le voir, l'archive compressée créée est légèrement plus légère que celle créée avec gzip.

Compresser des fichiers avec bzip2

La plupart du temps, la commande gzip est utilisé pour compresser des fichiers ou des archives.

Cependant, ce n'est pas historiquement la seule méthode de compression disponible en génie logiciel :vous pouvez également utiliser bzip2.

La principale différence entre gzip et bzip2 réside dans le fait que gzip utilise l'algorithme de compression LZ77 tandis que bzip2 utilise l'algorithme de Burrows-Wheeler .

Bzip2 est connu pour être plus lent que l'algorithme gzip, mais il peut être utile dans certains cas de savoir comment compresser avec bzip2.

Pour compresser des fichiers à l'aide de bzip2, exécutez simplement "bzip2" avec le nom de fichier que vous souhaitez compresser.

$ bzip2 archive.tar

Afin de décompresser les fichiers compressés à l'aide de bzip2, ajoutez simplement l'option "-d" à votre commande.

$ bzip -d archive.tar.bz2

Alternativement, vous pouvez créer des archives bz2 en utilisant la commande tar et en spécifiant l'option "-j".

$ tar -cjf archive.tar.gz2 file1 file2

En utilisant tar, vous avez la possibilité de compresser en utilisant un large panel de méthodes de compression différentes :

  • -j :compresser un fichier en utilisant la méthode de compression bz2 ;
  • -J :utilise l'utilitaire de compression xz ;
  • –lzip :utilise l'utilitaire de compression lzip ;
  • –lzma :utilise l'utilitaire de compression lzma ;
  • –lzop :utilise lzop pour compresser les fichiers
  • -z :équivalent à l'utilitaire gzip ou gunzip.

Conclusion

Dans ce didacticiel, vous avez appris à archiver et compresser fichiers à l'aide de l'utilitaire tar sous Linux.

Vous avez également découvert les différentes méthodes de compression disponibles et comment elles peuvent être utilisées pour réduire la taille de vos fichiers et répertoires.

Si vous êtes curieux de connaître l'administration système Linux, nous avons une section complète qui lui est consacrée sur le site Web, alors n'hésitez pas à y jeter un coup d'œil.


Linux
  1. Comment archiver des fichiers et des répertoires sous Linux [Partie 2]

  2. Comment archiver des fichiers et des répertoires sous Linux [Partie 1]

  3. Comment compresser et décompresser des fichiers sous Linux

  4. Comment extraire les fichiers .gz et .tar.gz sous Linux

  5. Comment compresser et décompresser des fichiers .bz2 sous Linux à l'aide de la commande bzip2

Comment compresser des fichiers et des répertoires sous Linux

Comment copier des fichiers et des répertoires sous Linux

Pigz - Compresser et décompresser des fichiers en parallèle sous Linux

Comment installer Rclone sous Linux et Unix

Commande tar Linux - Comment compresser des fichiers sous Linux

Comment installer et utiliser Pigz pour compresser des fichiers plus rapidement sous Linux