Wie komprimiere ich einen großen Ordner in kleine Dateien, die auf 20 MB begrenzt sind?

Ich suche nach einer Möglichkeit, einen großen Ordner in viele 20-MB-Dateien zu komprimieren. Ich möchte nicht, dass die ZIP-Datei in kleinere aufgeteilt wird. Stattdessen möchte ich einige Unterdateien/Ordner in Gruppen gruppieren, die beim Komprimieren 20 MB groß sind.

Wenn Sie wissen, wie das geht, helfen Sie bitte!

Update -

Ich muss die kleineren gezippten Dateien allein verwenden, die alleine entpackt werden können.

Meine Absicht ist es, virustotal.com um einen großen Ordner zu scannen.

Author: Nam G VU, 2011-04-01

8 answers

In winzip: Fügen Sie die Dateien in die zip entweder durch Starten von winzip und Hinzufügen oder per Drag & Drop in winzip oder Rechtsklick auf die Dateien und winzip ' add to zip...'

Dann in winzip:

Aktionen - Split am unteren Rand von 'Bauteilgröße' wählen Sie 'andere Größe' dann setzen 20 und wählen Sie mb

, Getan!

 11
Author: adolf garlic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-04-01 13:25:01

Wenn Sie zip die Aufteilung für Sie vornehmen lassen, ist die Automatisierung viel einfacher als der Versuch, dies selbst herauszufinden. Wenn Ihr Ziel 20 MB ZIP-Dateien sind, müssen Sie die komprimierte Größe jeder Datei schätzen, bevor Sie sie dem Archiv hinzufügen. Gibt es einen Grund, warum du zip nicht einfach die Trennung für dich machen lassen willst? So würden Sie es mit gnu zip machen:

zip -s 20m -r myzip.zip mydir

Dadurch werden 20 MB Zip-Dateien mit inkrementellen Indexnummern im Dateinamen erstellt.

 6
Author: SethG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-04-01 15:00:20

Was Sie vorschlagen, ist im Wesentlichen eine Variation von das Rucksackproblem, mit der zusätzlichen Wendung, dass Sie aufgrund der Dateikomprimierung nicht wissen, wie viel von Ihrem 20 MB großen "Rucksack" jeder Gegenstand belegt.

Die triviale Lösung wäre natürlich, jede Datei einfach unabhängig zu komprimieren, aber das reduziert die Anzahl der Dateien nicht, daher vermute ich, dass dies keine zufriedenstellende Lösung wäre.

Wenn mir dieses Problem präsentiert würde, würde ich wohl damit beginnen komprimieren Sie jede Datei einzeln an einen temporären Speicherort (oder im Speicher, ohne sie auf die Festplatte zu schreiben), nur damit ich für jede eine ungefähre komprimierte Größe erhalten kann. Mit diesen Informationen wäre es dann möglich zu entscheiden, welche Dateien nach einem der Standardansätze für das Rucksackproblem gruppiert werden sollen, und die tatsächlichen ZIP-Dateien zu erstellen.

Angenommen, Sie haben eine Skriptsprache zur Verfügung und wissen, wie man sie benutzt, würde ich erwarten, dass dieser Ansatz fair ist einfach zu automatisieren; es manuell zu tun wäre ziemlich mühsam, wenn Sie mehr als eine Handvoll Dateien zu behandeln haben...

 6
Author: Dave Sherohman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-04-04 09:25:41

Unter Linux gibt es ein Programm namens zipsplit, das genau das tut. Es ist Teil des standard-zip-Paket.

Es kann so ausgeführt werden:

zipsplit bigfile.zip -n 20000000

Um Bigfile aufzuteilen.zip in Teile von max 20MB. Und beachten Sie, dass einzelne enthaltene Dateien nicht aufgeteilt werden. Somit kann jedes Teil einzeln entpackt werden. Was auch bedeutet, dass die Aufteilung nicht möglich ist, wenn es eine einzelne Datei gibt, die nicht in die maximale Bauteilgröße passt.

Update: Es scheint dass es auch Binärdateien für Windows unter info-zip.org, insbesondere in ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn-x64.zip für Win 64.

 4
Author: Zitrax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-02-24 20:10:06

Keine leichte Aussicht, fürchte ich.

Ich habe kürzlich ein Skript geschrieben, um Dateien in Unterverzeichnissen zu sammeln, die nicht größer als 4,3 GB sind, um sie einfach auf DVD zu speichern, aber das war alles unkomprimiert.

Tun Sie es mit Kompression-jetzt gibt es die Herausforderung. Sie können die Größe der Dateien nach der Komprimierung von nicht vorhersagen-alles, was Sie tun können, ist, der ZIP-Datei Dateien in absteigender Größenordnung hinzuzufügen, bis sie 20 MB überschreitet, und dann die letzte Datei zu entfernen Ersetzen Sie sie durch eine kleinere, bis sie fällt unter 20 MB. Wenn Sie alle Dateien erschöpfen und es immer noch >20 MB sind, legen Sie einfach die letzte Datei ab und fahren Sie mit der nächsten Zip-Datei fort.

Ein ziemlich kniffliges Skript und ein ziemlich langsamer, schmerzhafter Prozess.

 3
Author: Majenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-04-01 11:55:22

Ich weiß, dass dies ein alter Thread ist,aber ich habe dies gerade mit 7-zip.

Sie müssen die Option "Split to Volume" verwenden:

geben Sie hier die Bildbeschreibung ein

 2
Author: Kevin Kuszyk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-03-30 10:02:54

Dave schien die am nächsten programmierbare Lösung zu bieten, was OP verlangte. Ich habe herausgefunden, dass dies auch manuell erfolgen kann, wenn die folgenden Annahmen getroffen werden (dies ist kein reines technisches Problem–es ist eher ein organisatorisches Problem als technisch):

  1. Da das OP erfordert, dass jede ZIP-Datei ihren gesamten Inhalt unabhängig extrahieren kann, müssen Dateien behandelt werden, die nach dem Zippen 20 MB überschreiten auf eine der folgenden Arten:
    • sie sind nicht zu berücksichtigen und müssen daher getrennt werden;
    • sie müssen in 20MB Volumes aufgeteilt werden, wie andere Antworten vorgeschlagen haben (winzip, 7-zip), und die resultierenden Dateien können nicht unabhängig voneinander verwendet werden (Brechen dieser 1st Annahme).
  2. Die gezippten Dateien müssen nicht unbedingt genau 20 MB groß sein.
  3. Wenn es wichtiger ist, mehrere Zip-Dateien mit der ungefähren 20 MB größe, dann zipping kann ohne kompression durchgeführt werden.

Durch die Verwendung dieser Methode mit 7-zip (Windows-Schnittstelle und Terminal) habe ich die Komprimierung in den neu generierten Zip-Dateien beibehalten.

Beginnen Sie mit dem Komprimieren aller Dateien in eine einzelne Zip-Datei in einem leeren Ordner (mit der gewünschten Komprimierungsmethode), z. B. ALL.zip, und öffnen Sie sie:

  1. Ordnen Sie die Liste der Dateien und Ordner an, indem Sie auf die Spalte Größe oder gepackte Größe (komprimiert) klicken.
  2. Start von den kleinsten Größen und wählen Sie Dateien / Ordner, die Sie in eine ZIP-Gruppe möchten;
  3. Drücken Sie die Taste Test, um ihre kollektive Größe zu bestätigen (dies berücksichtigt ihre Komprimierung): Test-Funktion
  4. Drücken Sie die Taste Extract oder Copy, während Sie am Ende des Extraktionspfads einen neuen Ordnernamen hinzufügen (z.: plu_8MB)
  5. Löschen Sie in ALL.zip zip diese gerade extrahierten Dateien (vermeiden Sie falsche erneute Extraktionen) und navigieren Sie zum nächsten Ordner oder Teilmenge von Dateien;
  6. Wiederholen Sie ein der folgenden:
    • Schritte 1 bis 5, wenn Sie eine unabhängige ZIP-Datei erstellen möchten;
    • Schritte 1 bis 3 und denselben Ordnernamen wiederverwenden (Schritt 4), bis ihre Gesamtgröße ungefähr 20 MB beträgt;
  7. Wenn Sie den gesamten Inhalt von ALL.zip in unabhängige Ordner extrahiert haben, löschen Sie diese ZIP-Datei und öffnen Sie das Terminal in diesem Ordner;
  8. Typ:

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

    Drücken Sie ENTER und dies generiert eine zip-Datei für jeden Ordner, den Sie gerade extrahiert haben.

 2
Author: CPHPython,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-20 10:17:55

Http://lars.werner.no/?page_id=2

Dies ist ein altes Produkt, das ich im Internet gefunden habe.

, Es könnte funktionieren. Stellen Sie sicher, benutzerdefinierte Größe von 20m auf der rechten Seite des Fensters zu wählen.

 0
Author: cybernard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-11-02 15:49:49