Archives par étiquette : archive

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).