Comment compresser un gros dossier en petits fichiers limités à 20 Mo?


10

Je cherche un moyen de compresser un gros dossier dans de nombreux fichiers de 20 Mo. Je ne veux pas que le fichier zip soit divisé en plus petits. Au lieu de cela, je veux regrouper certains sous-fichiers / dossiers en groupes de 20 Mo lorsqu'ils sont zippés.

Si vous savez comment le faire, aidez-moi!

Mise à jour

Je dois utiliser les petits fichiers zippés seuls qui peuvent être décompressés seuls.

Mon intention est d'utiliser virustotal.com pour numériser un gros dossier.


Des détails sur le système d'exploitation que vous utilisez?
Pitto

@Pitto J'utilise Windows-7
Nam G VU

Réponses:


10

Dans winzip: Ajoutez les fichiers au zip soit en démarrant winzip et en ajoutant ou faites glisser et déposez dans winzip ou faites un clic droit sur les fichiers et winzip 'ajouter au zip ...'

Puis dans winzip:

Actions - Séparer au bas de la 'taille de la pièce' choisir 'autre taille' puis mettre 20 et sélectionner mb

Terminé!


4
Rester du côté libre fonctionne également parfaitement 7zip :)
Pitto

3
Cela divisera le fichier zip et nous ne pouvons pas utiliser les parties divisées seules.
Nam G VU

Omg maintenant je comprends mieux ce que vous cherchez ... Je ne peux pas trouver tout type de solution à vous problème, alors :( Qu'est - ce que sur l' utilisation du Malwarebytes gratuit et merveilleux Antimalware pour scanner les fichiers localement?
Pitto

6

Ce que vous proposez est essentiellement une variation du problème du sac à dos , avec la torsion supplémentaire qui, en raison de la compression de fichiers, vous ne commencez pas à savoir combien de votre "sac à dos" de 20 Mo chaque élément occupera.

La solution triviale, bien sûr, serait de simplement compresser chaque fichier indépendamment, mais cela ne réduit pas le nombre de fichiers, donc je soupçonne que ce ne serait pas une solution satisfaisante.

Si on me présentait ce problème, je suppose que je commencerais par compresser chaque fichier individuellement dans un emplacement temporaire (ou en mémoire, sans les écrire sur le disque), juste pour que je puisse obtenir une taille compressée approximative pour chacun. Avec ces informations, il serait alors possible de décider quels fichiers devraient être regroupés par l'une des approches standard du problème du sac à dos et de créer les fichiers zip réels.

En supposant que vous disposez d'un langage de script et que vous savez comment l'utiliser, je m'attendrais à ce que cette approche soit assez simple à automatiser; le faire manuellement serait assez fastidieux si vous avez plus d'une poignée de fichiers à traiter ...


1
ne pouvez-vous pas compresser sans «compression»? En regardant la "mise à jour" de l'op, il semble que le format de fichier soit plus important que la compression.
Cher

1
Hé ... Bon point. Je n'avais pas envisagé l'utilisation de zip comme une simple archive sans compression.
Dave Sherohman

@DaveSherohman Alors, comment pouvons-nous le faire alors?
Nam G VU

5

Laisser zip faire le fractionnement pour vous sera beaucoup plus facile à automatiser que d'essayer de le découvrir par vous-même. Si votre objectif est de 20 Mo de fichiers zip, vous devrez estimer la taille compressée de chaque fichier avant de l'ajouter à l'archive. Y a-t-il une raison pour laquelle vous ne voulez pas simplement laisser zip faire le fractionnement pour vous? Voici comment vous le feriez avec gnu zip:

zip -s 20m -r myzip.zip mydir

Cela créera des fichiers zippés de 20 Mo avec des numéros d'index incrémentiels dans le nom de fichier.


4
Sur la base du commentaire d'OP à une autre réponse, il semble qu'il ne veut pas que zip le divise automatiquement car vous obtenez alors une seule archive qui nécessite que tous les fichiers fonctionnent correctement, mais il veut que chaque pièce soit une archive complète et utilisable, indépendante des autres.
Dave Sherohman

4

Sous Linux, il existe un programme nommé zipsplit qui fait exactement cela. Cela fait partie du package zip standard.

Il peut être exécuté comme ceci:

zipsplit bigfile.zip -n 20000000

pour diviser bigfile.zip en parties de max 20 Mo. Et notez que les fichiers contenus individuels ne seront pas divisés. Ainsi, chaque partie peut être décompressée individuellement. Ce qui signifie également que s'il existe un seul fichier qui ne peut pas tenir dans la taille maximale de la pièce, le fractionnement ne sera pas possible.

Mise à jour: Il semble qu'il existe également des binaires pour Windows sur info-zip.org, en particulier dans ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn-x64.zip pour Win 64.


3

Pas une perspective facile, je le crains.

J'ai récemment écrit un script pour rassembler des fichiers dans des sous-répertoires ne dépassant pas 4,3 Go pour un stockage facile sur DVD, mais tout cela n'était pas compressé.

Le faire avec la compression - c'est maintenant le défi. Vous ne pouvez pas prédire la taille des fichiers après la compression - tout ce que vous pouvez faire est de continuer à ajouter des fichiers au zip dans l'ordre décroissant de taille jusqu'à ce qu'il dépasse 20 Mo, puis de supprimer le dernier fichier en le remplaçant par un plus petit jusqu'à ce qu'il tombe en dessous de 20 Mo . Si vous épuisez tous les fichiers et qu'il est toujours> 20 Mo, déposez simplement le dernier fichier et passez au zip suivant.

Un peu compliqué de script et un processus assez lent et douloureux.


Voici ma pensée. Pourquoi ne pas simplement regrouper les fichiers / dossiers dans un groupe décompressé <= 20 Mo, puis les compresser? Nous n'avons pas besoin que les fichiers de résultats .zip aient exactement 20 Mo chacun.
Nam G VU

Possible - je ne sais pas comment vous y feriez dans Windows avec des scripts - J'ai déjà utilisé Perl sous Linux.
Majenko

2

Je sais que c'est un vieux fil, mais je viens de le faire avec 7-zip .

Vous devez utiliser l'option "Diviser en volume":

entrez la description de l'image ici


Cool. Je vais essayer de revenir avec toi plus tard.
Nam G VU

1
Ne fonctionne pas pour ce scénario spécifique car les petits fichiers zippés ne peuvent pas être décompressés seuls; ils doivent être maintenus ensemble.
browly

2

Dave semblait fournir la solution programmable la plus proche de ce qu'OP demandait. J'ai compris que cela pouvait aussi être fait manuellement , si les hypothèses suivantes étaient prises (ce n'est pas un pur problème technique - c'est plus un problème d' organisation que de technique):

  1. Étant donné que l' OP requiert que chaque fichier zip soit capable d'extraire tout son contenu de manière indépendante , les fichiers qui dépassent 20 Mo après le zippage doivent être traités de l'une des manières suivantes:
    • ils ne doivent pas être pris en considération et doivent donc être séparés;
    • ils doivent être divisés en volumes de 20 Mo, comme d'autres réponses le suggèrent ( winzip , 7-zip ), et les fichiers résultants ne peuvent pas être utilisés indépendamment (briser cette 1ère hypothèse).
  2. Les fichiers zippés n'ont pas nécessairement besoin d'avoir exactement 20 Mo.
  3. S'il est plus important d'avoir plusieurs fichiers zip avec une taille approximative de 20 Mo, le zippage peut être effectué sans compression.

En utilisant cette méthode avec 7-zip (interface et terminal Windows), j'ai conservé la compression dans les fichiers zip nouvellement générés.

Commencez par compresser tous les fichiers dans un seul fichier zip dans un dossier vide (avec la méthode de compression souhaitée), par exemple ALL.zip, et ouvrez-le:

  1. Commandez la liste des fichiers et des dossiers en cliquant sur la colonne taille ou taille compressée (compressée);
  2. Commencez par les plus petites tailles et sélectionnez les fichiers / dossiers que vous souhaitez regrouper dans un zip;
  3. Appuyez sur le Testbouton pour confirmer leur taille collective (ceci tient compte de leur compression): Fonction de test
  4. Appuyez sur le Extractou Copybouton tout en ajoutant à la fin du chemin d'extraction du nom d'un nouveau dossier (par exemple: plu_8MB)
  5. À l'intérieur de ALL.zipzip, supprimez les fichiers que vous venez d'extraire (en évitant les réextrusions erronées) et accédez au dossier ou sous-ensemble de fichiers suivant;
  6. Répétez l' une des opérations suivantes:
    • les étapes 1 à 5 si vous prévoyez de créer un fichier zip indépendant;
    • étapes 1 à 3 et réutilisez le même nom de dossier (étape 4) jusqu'à ce que leur taille collective soit d'environ 20 Mo;
  7. Une fois que vous avez extrait tout le contenu de ALL.zipdans des dossiers indépendants, supprimez ce zip et ouvrez le terminal dans ce dossier ;
  8. Type:

    for /F %i in ('dir /b') do "C:\Program Files\7-zip\7z.exe" a -tzip %i.zip %i
    

    Appuyez sur ENTERet cela générera un fichier zip pour chaque dossier que vous venez d'extraire.


Pour différents paramètres de la recompression, voici la documentation de la syntaxe 7zip .
CPHPython
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.