GNU/Linux >> Tutoriels Linux >  >> Linux

Mise à jour d'un seul fichier dans un tar compressé

Si le fichier que vous souhaitez mettre à jour est un fichier texte. Ensuite, vous pouvez utiliser vim editor directement pour ouvrir l'archive contenant le fichier et l'ouvrir, tout comme ouvrir le dossier à l'aide de l'éditeur vim. Modifiez ensuite le fichier, enregistrez-le et quittez.

Cependant, si le fichier est un fichier binaire. Je n'ai aucune idée de la solution.


Eh bien, j'ai trouvé la réponse.

Vous ne pouvez pas utiliser tar -u avec une archive zippée. La solution que j'ai utilisée était donc la suivante. Notez que j'ai déplacé le z.jar fichier dans un dossier que j'ai créé dans le répertoire courant appelé application/x/y à cet effet.

gzip -d application.tar.gz
tar -uf application.tar application/x/y/z.jar
gzip application.tar

Quand j'ai fait un tar -tf application.tar (après la mise à jour, avant le gzip) il s'est affiché correctement.


dans mon cas, j'ai dû supprimer le fichier puis ajouter le nouveau fichier en procédant comme suit :

mon fichier tar

file.tar
└── foo.json
└── bar.json
└── dir
    └── zoo.json

et je voulais seulement modifier/mettre à jour foo.json fichier sans extraire et recréer l'intégralité du fichier tar file.tar , Voici les commandes :

tar -x -f file.tar foo.json # extract only foo.json file to my current location
# now modify the file foo.json as you want ...
tar --delete -f file.tar foo.json # delete the foo.json file from the file.tar
tar -uf file.tar foo.json # add the specific file foo.json to file.tar

fichier compressé :

s'il s'agit d'un fichier compressé, comme file.tar.gz , vous devrez extraire le fichier tar du fichier compressé (dans cet exemple gzip) en utilisant gunzip file.tar.gz qui créera pour vous le fichier tar file.tar . alors vous pourrez faire ci-dessus étapes.

à la fin vous devez compresser à nouveau le fichier tar en utilisant gzip file.tar qui créera pour vous un fichier compressé avec le nom file.tar.gz

sous-répertoires :

afin de gérer les sous-répertoires, vous devrez également conserver la même structure dans le système de fichiers :

tar -x -f file.tar dir/zoo.json
# now modify the file dir/zoo.json as you want ...
tar --delete -f file.tar dir/zoo.json
tar -uf file.tar dir/zoo.json

afficher la structure du fichier :

en utilisant le less commande, vous pouvez voir la structure du fichier :

less file.tar

drwxr-xr-x root/root         0 2020-10-18 11:43 foo.json
drwxr-xr-x root/root         0 2020-10-18 11:43 bar.json
drwxr-xr-x root/root         0 2020-10-18 11:43 dir/zoo.json


Linux
  1. Tar :Extraire un seul fichier dans un répertoire sans créer de sous-dossiers ?

  2. Copie d'un fichier fragmenté de 1 To

  3. Comment extraire le fichier filename.tar.gz

  4. extraire un seul fichier d'un énorme fichier tgz

  5. Reprendre le transfert d'un seul fichier par rsync

Comment extraire (décompresser) le fichier Tar Gz

Comment extraire (décompresser) le fichier tar.xz

Comment créer un fichier Tar Gz

Comment créer un fichier Tar gz

Extraire le fichier tar.gz sous Linux

Compresser chaque fichier d'un répertoire dans son propre fichier compressé