Я ищу способ сжать большую папку во многие файлы 20 МБ. Я не хочу, чтобы почтовый файл разбивался на более мелкие. Вместо этого я хочу сгруппировать некоторые подфайлы / папки в группы, размер которых составляет 20 Мб в сжатом виде.
Если вы знаете, как это сделать, пожалуйста, помогите!
Обновить
Мне нужно использовать только меньшие заархивированные файлы, которые можно разархивировать в одиночку.
Я намерен использовать virustotal.com для сканирования большой папки.
Ответы:
В winzip: добавьте файлы в zip-архив, запустив winzip и добавив или перетащив его в winzip или щелкнув правой кнопкой мыши по файлам и winzip «add to zip ...»
Тогда в winzip:
Действия - Разделите в нижней части «Размер детали» выберите «Другой размер», затем поставьте 20 и выберите МБ
Выполнено!
источник
То, что вы предлагаете, - это, по сути, разновидность проблемы рюкзака , с добавленной особенностью, заключающейся в том, что из-за сжатия файла вы не начнете знать, сколько вашего 20-мегабайтного «рюкзака» займет каждый элемент.
Конечно, тривиальным решением будет просто сжать каждый файл независимо, но это не приведет к уменьшению количества файлов, поэтому я подозреваю, что это не будет удовлетворительным решением.
Если бы мне представили эту проблему, я бы начал с сжатия каждого файла по отдельности во временную папку (или в памяти, без записи их на диск), чтобы я мог получить приблизительный сжатый размер для каждого. С помощью этой информации можно будет решить, какие файлы следует сгруппировать, используя любой из стандартных подходов к проблеме ранца, и создать фактические zip-файлы.
Предполагая, что у вас есть язык сценариев, доступный для вас, и вы знаете, как его использовать, я ожидаю, что этот подход будет довольно простым для автоматизации; делать это вручную было бы довольно утомительно, если у вас есть больше, чем несколько файлов, чтобы иметь дело с ...
источник
Позволить zip сделать разбиение для вас будет гораздо проще, чем пытаться понять это самостоятельно. Если ваша цель - zip-файлы размером 20 МБ, вам необходимо оценить сжатый размер каждого файла перед добавлением его в архив. Есть ли причина, по которой вы не хотите просто позволять zip делать разбиение для вас? Вот как вы можете сделать это с помощью gnu zip:
Это создаст 20 МБ сжатых файлов с инкрементными индексными номерами в имени файла.
источник
В Linux есть программа с именем zipsplit, которая делает именно это. Это часть стандартного пакета Zip.
Это можно запустить так:
разделить bigfile.zip на части размером до 20 МБ. И обратите внимание, что отдельные содержащиеся файлы не будут разделены. Таким образом, каждая часть может быть расстегнута индивидуально. Это также означает, что если существует один файл, который не может вписаться в максимальный размер детали, разделение будет невозможно.
Обновление: Похоже, что на info-zip.org есть также двоичные файлы для Windows, в частности, в ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn-x64.zip для Win 64.
источник
Боюсь, нелегкая перспектива.
Недавно я написал скрипт для сбора файлов в подкаталоги размером не более 4,3 ГБ для удобного хранения на DVD, но все это было без сжатия.
Делать это со сжатием - теперь есть проблема. Вы не можете предсказать размер файлов после сжатия - все, что вы можете сделать, это добавлять файлы в zip в порядке убывания размера, пока он не превысит 20 МБ, а затем удалить последний файл, заменив его меньшим, пока он не упадет ниже 20 МБ. , Если вы исчерпали все файлы и они все еще имеют размер> 20 МБ, просто отбросьте последний файл и переходите к следующему zip.
Довольно сложный сценарий и довольно медленный, болезненный процесс.
источник
Я знаю, что это старая тема, но я только что сделал это с 7-Zip .
Вам нужно использовать опцию «Split to Volume»:
источник
Дэйв, казалось, предоставил самое близкое программируемое решение к тому, что запросил OP. Я понял, что это можно сделать и вручную , если принять следующие допущения (это не чисто техническая проблема - это скорее организационная проблема, чем техническая):
Используя этот метод с 7-zip (интерфейс и терминал Windows), я сохранил сжатие во вновь созданных zip-файлах.
Начните с архивирования всех файлов в один zip-файл в пустой папке (с желаемым методом сжатия), например
ALL.zip
, и откройте его:Test
кнопку, чтобы подтвердить их общий размер (это учитывает их сжатие):Extract
илиCopy
кнопку, добавляя к концу пути извлечения имени в новой папке (например:plu_8MB
)ALL.zip
zip удалите только что извлеченные файлы (избегая ошибочных повторных извлечений) и перейдите к следующей папке или подмножеству файлов;ALL.zip
в независимые папки, удалите этот zip и откройте терминал в этой папке ;Тип:
Нажмите, ENTERи это создаст ZIP-файл для каждой папки, которую вы только что извлекли.
источник