Splitteur de zip en vrais zips

Bonjour,

Je recherche un outil qui me permette de créer de multiples fichiers zip dont la taille ne dépasse pas 2 Mo à partir de données qui se compactent normalement en environ 10Mo (taille du fichier zip unique).

Les différents logiciels de compression que j'ai pu tester (Winzip, 7-Zip, WinRAR) permettent de compacter de grosses quantités de données en de multiples volumes, qui peuvent, ensuite être reconstitués (par le même logiciel), mais ces multiples volumes ne constituent pas isolément de vrais fichiers zip, c'est à dire des fichiers zip pouvant être décompactés indépendamment les uns des autres par un autre décompacteur ne gérant pas les multiples volumes.

Connaissez-vous un logiciel capable de créer de réels multiples fichiers zip à partir des données brutes ou d'un fichier zip préexistant ?

Merci :-)

Dal

4 réponses

  1. Je ne pense pas que cela soit possible, dans ces conditions :(
    0
    1. Contributeur
      Personne d'autre n'a d'idées ?

      C'est un outil de "découpage" dont j'ai besoin pour uploader sur un site Web que je gère, et sur lequel je n'ai pas d'accès ftp, des fichiers zip qui vont être décompactés par le CMS (Joomla) qui gère le site Web (avec l'extension joomlaXplorer), ce serveur limitant lui-même la taille maximales des fichiers pouvant être uploadés à 2 Mo.

      Mes fichiers zip ne doivent donc pas dépasser 2 Mo, et doivent chacun être dézippables pour reconstituer près de 20 Mo de données.

      Je pense que d'autres Webmasters pourraient avoir besoin de telles fonctionnalités, la limitation de 2 Mo en upload étant assez courante.

      Dal
      0
      1. Bonjour,
        Tu n'a qu'a faire un gros zip et le découper (si tu fais du C (ou autre) fais un logiciel qui lit 2 Mo, qui les mettes dans un fichier etc...
        Si tu fais du C utilise fread en binaire.
        0
        1. Contributeur
          Bonjour Greg159357,

          Merci de ton aide, même tardive* :-)

          Ton approche de simple "découpage" ne répondrait pas à la question posée, qui était de créer de multiples "fichiers zip" ne dépassant pas 2 Mo et "pouvant être décompactés indépendamment les uns des autres par un autre décompacteur ne gérant pas les multiples volumes". Ton découpage crée des fichiers qui ne sont des pas des fichiers .zip lisibles individuellement.

          Bien sûr, on pourrait créer un programme en C (ou autre) qui compresse les données, en organisant les fichiers de façon intelligente (un peu comme un puzzle, où il faut choisir et agencer les bonnes pièces) pour que les fichiers entiers tiennent dans la limite imposée. C'est loin d'être un programme trivial si on veut le faire de façon vraiment intelligente. Sans optimisation particulière, on pourrait simplifier en compressant les fichiers dans un ordre arbitraire, en surveillant la taille compressée et lorsque la limite est atteinte ignorer la partie du flux compressé correspondant à un fichier non complètement compressé (ce que devrait permettre le format zip, où l'algorithme de compression n'utilise qu'une seule passe et compresse les fichiers individuellement dans le conteneur .zip).

          Quand j'aurai un moment, je m'y mettrai sûrement ;-)

          Dal

          * Depuis 2008, j'ai changé d'hébergement pour un serveur dédié et j'ai la main sur les transferts de fichiers que je transfère avec scp quelle que soit la taille avec mon accès shell.
          0
      2. Modérateur
        Salut

        Tu ne peut pas découper ton dossier à envoyer en amont, en faisant des répertoire contenant moins de 2 Mo ?
        0
        1. Contributeur
          Salut PierreCastor,

          Greg a déterré un sujet datant de 2008, qui n'est plus d'actualité pour moi :-)

          Sinon, ton approche est bonne puisque les .zip pèseront (la plupart du temps, sauf pour les données où aucun gain de place n'est obtenu par la compression) normalement moins lourd que les données contenues dans les répertoires.

          Cependant : c'est fastidieux pour de nombreux petits fichiers de les organiser en répertoires et cela crée des répertoires dont tu ne veux pas, a priori.

          Dal
          0
        2. Modérateur
          Je n'avais pas vu la date.

          Mais ce que je comptais "proposer" était dans la même idée que ta réponse en post 6, un scripte bash qui te trie automatiquement tout des fichiers dans des répertoire de moins de 2 Mo puis qui les zip tous.
          0
        3. Contributeur
          oui, on peut automatiser ta suggestion avec un script bash.

          mais je ne crois pas qu'on puisse implémenter ma suggestion en bash :

          en surveillant la taille compressée et lorsque la limite est atteinte ignorer la partie du flux compressé correspondant à un fichier non complètement compressé

          Elle suppose d'avoir accès au flux compressé.

          Je pensais plus à du C avec zlib et Minizip.

          Dal
          0
        4. Contributeur
          hmm, à la réflexion, si, on pourrait le faire en bash.

          il suffit :

          - de faire une liste des fichiers à compresser
          - de compresser en commençant par le début en ajoutant les fichiers un par un et en vérifiant la taille du fichier .zip qui en résulte
          - si le .zip dépasse la taille maximale, on retire du zip le dernier fichier ajouté
          - on continue avec le .zip suivant

          en ligne de commande, les compresseurs zip permettent d'ajouter ou de supprimer des fichiers à un fichier .zip existant.

          pas besoin de répertoires !

          :-)

          Dal
          0