Что делать если размер файлов превышает 20 мб декларация

Обновлено: 02.07.2024

Я ищу способ сжать большую папку во многие файлы 20 МБ. Я не хочу, чтобы почтовый файл разбивался на более мелкие. Вместо этого я хочу сгруппировать некоторые подфайлы / папки в группы, размер которых составляет 20 Мб в сжатом виде.

Если вы знаете, как это сделать, пожалуйста, помогите!

Мне нужно использовать только меньшие заархивированные файлы, которые можно разархивировать в одиночку.

Omg now I understand better what you're looking for. I just can't find any kind of solution to you problem, then :( What about using the free and marvellous Malwarebytes Antimalware to scan the files locally? Pitto 10 лет назад 0

Конечно, тривиальным решением будет просто сжать каждый файл независимо, но это не приведет к уменьшению количества файлов, поэтому я подозреваю, что это не будет удовлетворительным решением.

Если бы мне представили эту проблему, я бы начал с сжатия каждого файла по отдельности во временную папку (или в памяти, без записи их на диск), чтобы я мог получить приблизительный сжатый размер для каждого. Имея эту информацию, можно будет решить, какие файлы следует сгруппировать, используя любой из стандартных подходов к проблеме ранца, и создать фактические zip-файлы.

Предполагая, что у вас есть язык сценариев, доступный для вас, и вы знаете, как его использовать, я ожидаю, что этот подход будет довольно простым для автоматизации; делать это вручную было бы довольно утомительно, если у вас есть более чем несколько файлов, чтобы иметь дело с .

Heh. Good point. I hadn't considered the use of zip as a simple archive without compressing. Dave Sherohman 10 лет назад 1

Позволить zip сделать разбиение для вас будет гораздо проще, чем пытаться понять это самостоятельно. Если ваша цель - ZIP-файлы размером 20 МБ, вам необходимо оценить сжатый размер каждого файла перед добавлением его в архив. Есть ли причина, по которой вы не хотите просто позволять zip делать разбиение для вас? Вот как вы можете сделать это с помощью gnu zip:

Это создаст 20 МБ сжатых файлов с инкрементными индексными номерами в имени файла.

Исходя из комментария ОП к другому ответу, похоже, что он не хочет, чтобы zip автоматически разбивал его, потому что тогда вы получаете один архив, который требует, чтобы все файлы функционировали должным образом, но он хочет, чтобы каждый фрагмент был полным, пригодным для использования архивом, независимым из других. Dave Sherohman 10 лет назад 3

Боюсь, нелегкая перспектива.

Недавно я написал скрипт для сбора файлов в подкаталоги размером не более 4,3 ГБ для удобного хранения на DVD, но все это было без сжатия.

Делать это со сжатием - теперь есть проблема. Вы не можете предсказать размер файлов после сжатия - все, что вы можете сделать, это добавлять файлы в zip в порядке убывания размера, пока он не превысит 20 МБ, а затем удалить последний файл, заменив его меньшим, пока он не упадет ниже 20 МБ., Если вы исчерпали все файлы и они все еще имеют размер> 20 МБ, просто отбросьте последний файл и переходите к следующему zip.

Довольно сложный сценарий и довольно медленный, болезненный процесс.

Возможно - не уверен, как бы вы поступили в Windows с использованием сценариев - я раньше использовал Perl на Linux. Majenko 10 лет назад 0

I know this is an old thread, but I just did this with 7-zip.

You need to use the "Split to Volume" option:

enter image description here

Не работает для этого конкретного сценария, потому что меньшие заархивированные файлы не могут быть распакованы в одиночку; они должны быть вместе. browly 5 лет назад 1

В Linux есть программа с именем zipsplit, которая делает именно это. Это часть стандартного пакета Zip.

Это можно запустить так:

разделить bigfile.zip на части размером не более 20 МБ. И обратите внимание, что отдельные содержащиеся файлы не будут разделены. Таким образом, каждая часть может быть расстегнута индивидуально. Это также означает, что если существует один файл, который не может вписаться в максимальный размер детали, разделение будет невозможно.

Дэйв, казалось, дал самое близкое программируемое решение к тому, что запросил OP. Я понял, что это можно сделать и вручную, если принять следующие допущения (это не чисто техническая проблема - это скорее организационная проблема, чем техническая):

  1. Поскольку OP требует, чтобы каждый zip-файл мог извлекать все его содержимое независимо, файлы, размер которых превышает 20 МБ после архивирования, должны обрабатываться одним из следующих способов:
    • они не должны рассматриваться, и поэтому должны быть отделены;
    • их нужно разделить на тома по 20 МБ, как предлагали другие ответы ( winzip, 7-zip ), и полученные файлы нельзя использовать независимо (нарушая это первое предположение).
  2. Заархивированные файлы не обязательно должны иметь ровно 20 МБ.
  3. Если более важно иметь несколько zip-файлов с приблизительным размером 20 МБ, то сжатие может быть выполнено без сжатия.

Используя этот метод с 7-zip (интерфейс и терминал Windows), я сохранил сжатие во вновь созданных zip-файлах.

Начните с архивирования всех файлов в один zip-файл в пустой папке (с желаемым методом сжатия), например ALL.zip , и откройте его:

Test feature

  1. Упорядочить список файлов и папок, нажав на столбец размера или упакованного размера (сжатый);
  2. Начните с самых маленьких размеров и выберите файлы / папки, которые вы хотите сгруппировать в zip;
  3. Нажмите Test кнопку, чтобы подтвердить их общий размер (это учитывает их сжатие):
  4. Нажмите Extract или Copy кнопку, добавляя к концу пути извлечения имени в новой папке (например: plu_8MB )
  5. Внутри ALL.zip zip удалите только что извлеченные файлы (избегая ошибочных повторных извлечений) и перейдите к следующей папке или подмножеству файлов;
  6. Повторите одно из следующих действий:
    • шаги с 1 по 5, если вы планируете создать независимый zip-файл;
    • шаги с 1 по 3 и повторное использование одного и того же имени папки (шаг 4) до тех пор, пока их общие размеры не станут примерно 20 МБ;
  7. После того, как вы извлекли все содержимое ALL.zip в независимые папки, удалите этот zip и откройте терминал в этой папке ;

Нажмите, ENTER и это создаст zip-файл для каждой папки, которую вы только что извлекли.

Читайте также: