Splitteur de zip en vrais zips

Fermé
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 7 févr. 2008 à 14:10
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 22 oct. 2013 à 13:23
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
A voir également:

4 réponses

Zabuza66 Messages postés 366 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 26 novembre 2008 66
7 févr. 2008 à 14:33
Je ne pense pas que cela soit possible, dans ces conditions :(
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
7 févr. 2008 à 15:58
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
Greg159357 Messages postés 112 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 4 janvier 2014 3
22 oct. 2013 à 12:25
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
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 22/10/2013 à 13:06
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
Pierrecastor Messages postés 41466 Date d'inscription mercredi 5 novembre 2003 Statut Modérateur Dernière intervention 5 avril 2024 4 131
22 oct. 2013 à 12:32
Salut

Tu ne peut pas découper ton dossier à envoyer en amont, en faisant des répertoire contenant moins de 2 Mo ?
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 22/10/2013 à 13:08
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
Pierrecastor Messages postés 41466 Date d'inscription mercredi 5 novembre 2003 Statut Modérateur Dernière intervention 5 avril 2024 4 131
22 oct. 2013 à 13:08
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
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
22 oct. 2013 à 13:21
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
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 22/10/2013 à 13:27
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