Compresser des fichiers en plusieurs archives tar ou couper une grosse archive tar en deux (ou plus)

Voici une opération que je savais faire avec WinRAR sous Windows mais que je n’avais jamais eu besoin de faire sous Linux, c’est à dire de séparer un gros fichier (plus de 4 Go) en plusieurs fichiers d’archives de tailles inférieures, mais qu’on puisse décompresser sous sa forme initiale en un seul fichier. Et bien c’est possible avec tar et l’option -M, couplée à la -L.

tar -cM -L 2500000 -f GrosFichier.tar.gz GrosFichier_Morceaux01.tar.gz

L’option -M indique qu’on va créer un fichier multi-volume et l’option -L permet de limiter la taille de chaque fichier. Ci-dessous les informations sur ces deux options dans le Man de tar :

 -L, --tape-length N
   change tapes after writing N*1024 bytes
-M, --multi-volume
  create/list/extract multi-volume archive

Source

Quand on atteindra la taille limite nous aurons cet affichage, qui nous invitera à indiquer le nouveau volume où écrire. Il faudra précéder le nom de fichier de « n » ainsi que vous pouvez le constater dans cet exemple :

Préparez le volume n°2 pour « GrosFichier_Morceaux01.tar.gz » et appuyez sur Entrée : n GrosFichier_Morceaux02.tar.gz

Si vous oubliez le « n », vous aurez cet affichage :

Préparez le volume n°3 pour « GrosFichier_Morceaux01.tar.gz » et appuyez sur Entrée : GrosFichier_Morceaux02.tar.gz
Données non valables en entrée. Tapez « ? » pour obtenir de l’aide.
Préparez le volume n°3 pour « GrosFichier_Morceaux01.tar.gz » et appuyez sur Entrée :

Il vous suffira alors de retaper le nome de fichier en le précédent du « n ». Une fois la séparation effectuée vous pourrez décompresser ces fichiers vers un seul et unique de la manière suivante :

tar -xMf GrosFichier_Morceaux01.tar.gz
Préparez le volume n°2 pour « GrosFichier_Morceaux01.tar.gz » et appuyez sur Entrée : n GrosFichier_Morceaux02.tar.gz

Attention toutefois, si vous le décompresser là où est votre gros fichier initial, il est normal que vous ne voyez rien. mais si vous le faites dans un dossier autre, vous récupérerez bien votre gros fichier. Vous pouvez aussi utiliser cette méthode pour compresser un dossier composé de nombreux fichiers et dont la taille totale serait trop importante à votre goût :

tar -cvM -L 2500000 -f /tmp/data_01.tar /var/data/

Il est possible d’ajouter bien d’autres options, mais c’est une autre histoire. Nous avons déjà ici la base pour faire ce fonctionnement. Libre à vous par exemple de conserver les droits utilisateurs, ou bien de compresser encore plus l’archive finale (par exemple).

Une réflexion sur « Compresser des fichiers en plusieurs archives tar ou couper une grosse archive tar en deux (ou plus) »

  1. samdesbois

    Merci pour ce cas de figure que je cherchais depuis quelques minutes sur google. Malheureusement je n’ai pas réussi sous OS X bien que la commande tar existe. Les options citées dans ce billet ne sont d’ailleurs pas présentes dans le man. Par contre j’ai trouvé la commande salit qui semble marcher sous mac au moins (et très probablement sous linux qui repose sous unix comme on le sait).

Laisser un commentaire

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

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.