GNU/Linux >> Tutoriels Linux >  >> Linux

extraire un seul fichier d'un énorme fichier tgz

Malheureusement, afin de décompresser un seul membre de .tar.gz archive, vous devez traiter l'intégralité de l'archive, et vous ne pouvez pas faire grand-chose pour la réparer.

C'est là que .zip (et quelques autres formats comme .rar ) les archives fonctionnent beaucoup mieux, car zip le format a un répertoire central de tous les fichiers qu'il contient avec des décalages directs pointant vers le milieu du zip fichier, afin que les membres de l'archive puissent être extraits rapidement sans tout traiter.

Vous pourriez vous demander pourquoi traiter .tar.gz est si lent ?

.tar.gz (souvent abrégé en .tgz ) est simplement .tar archive compressée avec gzip compresseur. gzip est un compresseur de streaming qui ne peut fonctionner qu'avec un seul fichier. Si vous souhaitez obtenir une partie de gzip stream, vous devez le décompresser dans son ensemble, et c'est ce qui le tue vraiment pour .tar.gz (et pour .tar.bz2 , .tar.xz et autres formats similaires basés sur .tar ).

.tar format est en fait très, très simple. Il s'agit simplement d'un flux d'en-têtes de fichier ou de répertoire de 512 octets (nom, taille, etc.), chacun suivi du contenu du fichier ou du répertoire (complété à une taille de bloc de 512 avec 0 octet si nécessaire). Lorsque vous observez un bloc 512 totalement nul pour un en-tête, cela signifie la fin de .tar archiver.

Certaines personnes pensent que même .tar les membres de l'archive ne sont pas accessibles rapidement, mais ce n'est pas tout à fait vrai. Si .tar archive contient peu de gros fichiers, vous pouvez en fait rechercher rapidement dans l'en-tête suivant, et ainsi vous pouvez trouver le membre d'archive nécessaire en quelques recherches (mais cela peut toujours nécessiter autant de recherches qu'il y a de membres d'archive). Si votre .tar l'archive contient de nombreux fichiers minuscules, cela signifie qu'une récupération rapide des membres devient effectivement impossible, même pour .tar non compressé .


Si vous extrayez un seul fichier d'un gros fichier tar, vous utilisez GNU tar , et vous pouvez garantir que le fichier tar n'a jamais été ajouté à alors vous pouvez obtenir une amélioration significative des performances en utilisant --occurrence .

Cette option indique à tar de s'arrêter dès qu'il trouve la première occurrence de chaque fichier que vous avez demandé, par exemple

tar xf large-backup.tar --occurrence etc/passwd etc/shadow

ne parcourra pas l'intégralité de l'archive après avoir trouvé une copie de chacun des passwd et shadow , à la place, il s'arrêtera. Si ces fichiers apparaissent vers la fin, le gain de performances ne sera pas important, mais s'ils apparaissent même à mi-chemin d'un fichier de 500 Go, vous gagnerez beaucoup de temps.

Pour les personnes utilisant tar pour les sauvegardes uniques et n'utilisant pas de véritables lecteurs de bande, cette situation est probablement le cas typique.

Notez que vous pouvez également passer --occurrence=NUMBER pour récupérer la NUMBERième occurrence de chaque fichier, ce qui aide si vous savez qu'il existe plusieurs versions dans l'archive. Par défaut le comportement est égal à un NUMBER de 1.


Lorsqu'il s'agit d'une grande archive tar, utilisez :

--fast-read pour extraire uniquement la première entrée d'archive qui correspond à l'opérande du nom de fichier, path/to/file dans ce cas - qui est toujours unique dans l'archive tar de toute façon

tar -xvf file.tgz --fast-read path/to/file

ce qui précède recherchera jusqu'à ce qu'il trouve une correspondance, puis quittera


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

  2. Erreur de sortie de l'archive :Tar.xz :format de fichier non reconnu ?

  3. Comment extraire ou décompresser le fichier tar.xz sous Linux

  4. Ouvrir un fichier .tar.gz avec une seule commande

  5. Erreur tar :EOF inattendu dans l'archive

Comment extraire ou décompresser des fichiers tar.gz à partir de la ligne de commande Linux

Comment extraire (décompresser) le fichier Tar Gz

Comment extraire (décompresser) le fichier Tar Bz2

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

Extraire le fichier tar.gz sous Linux

Ajout de fichier aux fichiers tbz