GNU/Linux >> Tutoriels Linux >  >> Linux

Ajout de fichier aux fichiers tbz

Alors que tar peut ajouter des fichiers à une archive déjà existante, elle ne peut pas être compressée. Vous devrez bunzip2 l'archive compressée, laissant une archive tar standard. Vous pouvez alors utiliser tar la possibilité d'ajouter des fichiers à une archive existante, puis de recompresser avec bzip2 .

Du manuel :

 -r      Like -c, but new entries are appended to the archive.  Note that this only
         works on uncompressed archives stored in regular files.  The -f option is
         required.

L'autre réponse est correcte :vous ne pouvez pas mettre à jour correctement une archive tar compressée sans la décompresser. La documentation GNU tar y fait allusion, et la tentative de mise à jour échoue avec un message d'erreur explicite :

$ tar --concatenate --file=cat.tar.bz2 two.tar.bz2 
tar: Cannot update compressed archives
tar: Error is not recoverable: exiting now

Cependant, si vous êtes intéressé par une solution sale qui ne nécessite pas de décompression, je peux vous en fournir une, basée sur les observations suivantes :

  • Ajout de flux bzip2 à l'aide de cat est pris en charge et produit un flux bzip2 valide (il en va de même pour gzip) ;
  • ajout de tars en utilisant cat ne produit pas de fichier tar valide, c'est pourquoi le --concatenate l'option existe, mais nous pouvons demander à tar de prétendre qu'elle est valide :

Il peut vous sembler plus intuitif de vouloir ou d'essayer d'utiliser cat pour concaténer deux archives au lieu d'utiliser le --concatenate opération; après tout, cat est l'utilitaire permettant de combiner des fichiers.

Cependant, les archives tar incorporent un marqueur de fin de fichier qui doit être supprimé si les archives concaténées doivent être lues correctement comme une seule archive. --concatenate supprime le marqueur de fin d'archive de l'archive cible avant que chaque nouvelle archive ne soit ajoutée. Si vous utilisez cat pour combiner les archives, le résultat ne sera pas une archive au format tar valide. Si vous avez besoin de récupérer des fichiers à partir d'une archive qui a été ajoutée à l'aide de l'utilitaire cat, utilisez le --ignore-zeros (-i ).

Sur la base de ces connaissances, nous pouvons faire, par exemple :

cat {one,two}.tar.bz2 >combined.tar.bz2

Cela se traduit, comme l'explique l'extrait de documentation ci-dessus, dans un fichier tar invalide, mais en utilisant --ignore-zeros , il peut toujours être lu entièrement :

## Show contents of `one.tar.bz2'
$ tar tf one.tar.bz2
a
b

## Show contents of `two.tar.bz2'
$ tar tf two.tar.bz2
c

## Show contents of `combined.tar.bz2', bypassing the bad format
$ tar tif combined.tar.bz2
a
b
c

Notez comment ce qui précède répertorie les trois fichiers des deux archives d'origine, tout en omettant -i (correctement) répertorie uniquement les fichiers de la première archive d'origine :

$ tar tf combined.tar.bz2 
a
b

Encore une fois, ce n'est rien de plus qu'un sale tour, mais cela pourrait être utile si vous contrôlez à la fois les côtés écriture et lecture et pouvez vous assurer que -i sera utilisé lors d'une tentative de lecture à partir de fichiers créés de cette manière.


Linux
  1. 16 commandes Tar pour compresser et extraire des fichiers sous Linux

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

  3. Comment tar (compresser) des fichiers, en excluant certains fichiers ou répertoires

  4. Extraire des fichiers spécifiques dans une archive tar à l'aide d'un caractère générique

  5. Format d'archive indexée ?

Comment créer un fichier Tar Gz

Commande tar Linux - Comment compresser des fichiers sous Linux

Comment tarer des types de fichiers spécifiques (extensions) dans un répertoire

Comment ajouter/mettre à jour un fichier dans une archive Tar.gz existante ?

Commande Linux tar pour compresser et extraire des fichiers

Extraire le fichier tar.gz sous Linux