Forum Programmation.autre Taille du contenu d'un .bz2

Posté par  .
Étiquettes : aucune
0
18
août
2006
Bonjour,

impossible de mettre la main sur une maniere de recuperer la taille du contenu d'un fichier compresse avec bzip2 sans passer par l'etape de decompression: aucun utilitaire ne le propose, et il semble que le format de fichier .bz2 ne contienne pas cette information (contrairement a gzip qui stocke la taille du fichier decompresse et son CRC dans les 8 derniers octets)

dois je me resigner a decompresser ou etes vous en mesure de partager une formule magique ?

merci
  • # tar ?

    Posté par  . Évalué à -1.

    un tar tvjf donne les tailles des fichiers chez moi.
    • [^] # Re: tar ?

      Posté par  . Évalué à 3.

      un "tar cvjf" creer un fichier .tar qui est ensuite compresse en utilisant bz2

      Dans ce cas c'est le tar qui est compresse et non les fichiers inclus dans le tar

      Donc "tar tvjf" decompresse le fichier tar.bz2 et lit le .tar a la volee pour recuperer les tailles des fichiers qui y sont inclus
  • # Le couteau suisse: hachoir

    Posté par  . Évalué à 2.

    Bonjour,

    Un piste dont voici l'historique:
    [http://linuxfr.org/forums/12/14696.html] (merci dark_star et les autres) -> .... -> [http://hachoir.org/]

    Et dans un des filtres de ce couteau suisse, on trouve un code en python qui décompose le fichier .bz2 [Bzip2] [http://hachoir.org/browser/hachoir/trunk/hachoir/parser/arch(...)].
    Après, j'ai un peu de mal à comprendre la dernière formule qui semble donner une taille (il faudrait trouver où & comment sont initialisés/évalués les champs .size et .current_size de l'instance self):
    "(self.size - self.current_size)/8" <=> "Compressed data content"

    Ou plus simple ^__^, tester cet outil sur un jeu de fichiers .bz2 ...

    Bon courage !

    Cdlt,
    • [^] # Re: Le couteau suisse: hachoir

      Posté par  . Évalué à 2.

      je suis alle faire un tour du cote de hachoir, mais c'est la taille des donnees compressees qui est donnee, pas celle du fichier decompresse
      • [^] # Re: Le couteau suisse: hachoir

        Posté par  . Évalué à 1.

        Je ne sais pas si le hachoir peut aider à récupérer ces infos mais la spec du format bzip2 que l'on peut trouver notamment là :

        http://www.opennet.ru/docs/formats/BZIP2_tech.html

        indique que les fichiers bz2 contiennent un chunk INDX/iNDX qui contient un prélude et une série d'entêtes, un pour chaque fichier contenu dans l'archive. Le dernier élément de cet entête est la taille du fichier (non compressé).
        • [^] # Re: Le couteau suisse: hachoir

          Posté par  . Évalué à 2.

          Desole mais a moins d'avoir mal lu, ZIP2 n'est pas bzip2
          • [^] # Re: Le couteau suisse: hachoir

            Posté par  . Évalué à 1.

            Oups ! Je me suis fait avoir par le bzip2 dans l'url.

            Par contre, pour essayer de me rattraper, j'ai essayé de trouver des infos sur la structure du format bzip2, pour le moment sans succès. Quelqu'un aurait ça dans ses placards ?
    • [^] # Re: Le couteau suisse: hachoir

      Posté par  (site web personnel) . Évalué à 2.

      Tiens, ça me fait plaisir de voir que mon logiciel est cité sur le forum :-) Par contre, je crains que le parseur actuel du format bzip2 dans Hachoir soit insuffisant. Justement, il faudrait que je le complète un jour ou l'autre, enfin moi ou quelqu'un d'autre. Avis aux amateurs.

      Je me suis aussi posé la question : est-ce que le format bzip2 indique ou non la taille décompressée ? Apparement oui, il faut voir dans les 95% des non-reconnues par Hachoir :-)

      Haypo
      • [^] # Re: Le couteau suisse: hachoir

        Posté par  . Évalué à 2.

        jusqu'a maintenant rien ne semble indique que cela soit possible, et apres examen du code source de bzip2, j'ai peur que cette info n'existe pas dans l'archive meme.
  • # WC

    Posté par  . Évalué à 1.

    bzcat mon_fichier.bz2 | wc
    Pour avoir un listing :
    bzcat mon_fichier.bz2 | tar tvf -
    bzcat mon_fichier.bz2 | cpio -tv
    • [^] # Re: WC

      Posté par  . Évalué à 2.

      bzcat ne fait rien d'autre que "bunzip2 -c", c'est a dire decompresser le .bz2 (ce que je souhaite eviter) et afficher le resultat sur la sortie standard.

      quant a tes deux derniere lignes, encore faut il que le fichier compresse soit une archive tar ou cpio
      • [^] # Re: WC

        Posté par  . Évalué à -1.

        Tant pis.
        Fous ton fichier à la poubelle et essais de le trouver au format zip.
    • [^] # Re: WC

      Posté par  . Évalué à 2.

      > bzcat mon_fichier.bz2 | wc

      Petit détail, wc est utilisé pour compter les caractères. Donc il tient compte des locales et notament d'UTF8. Donc si mon_fichier.bz2 contient du binaire alors utilisé :
      bzcat mon_fichier.bz2 | LANG=C wc
      • [^] # Re: WC

        Posté par  . Évalué à 2.

        je viens de comprendre le pourquoi de ta reponse: lorsque je dis que je ne veux pas decompresser, c'est parce que je cherche juste l'information "taille du fichier decompresse".

        C'est pour faire un barre de defilement lors de la decompression, donc c'est un peu ballot d'avoir a decompresser le fichier pour avoir cette info
        • [^] # Re: WC

          Posté par  . Évalué à 2.

          s/defilement/progression/

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.