web-dev-qa-db-fra.com

Comment supprimer un seul fichier d'une archive tar.gz

J'ai une énorme archive tarbell avec un journal d'erreurs excessivement grand ou corrompu qui provoque le blocage de l'archive lors de la tentative d'extraction. Existe-t-il un moyen de supprimer cela de l'archive avant de décompresser ou d'extraire l'archive sans extraire ce fichier spécifique sur le terminal Mac OS X?

J'ai trouvé ce post sur la façon de supprimer efficacement les fichiers de grand tgz cependant, j'ai essayé le drapeau --delete, mais j'ai reçu cette erreur:

tar: Option --delete is not supported

Existe-t-il un moyen de:

  1. supprimer le fichier de l'archive sans le décompresser?
  2. extraire l'archive mais exclure le fichier?
14
KillerDesigner

Comme mentionné dans les commentaires, il n'est pas possible de supprimer le fichier à l'aide de tar, mais vous pouvez exclure le fichier lors de l'extraction:

tar -zxvf file.tar.gz --exclude "file_to_exclude"
17
msfoster

Vous pouvez le reconditionner comme ceci:

tar -czvf ./new.tar.gz --exclude='._*' @old.tar.gz

J'ai utilisé ._* pour supprimer tout ._files , mais vous pouvez utiliser n'importe quel modèle de votre choix, y compris un chemin d'accès complet, un répertoire, un nom de fichier ou autre.

0
voices