Как заархивировать большую папку на небольшие файлы размером до 20 МБ?

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

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

Обновить

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

Я намерен использовать virustotal.com для сканирования большой папки.


В winzip: добавьте файлы в zip, запустив winzip и добавление или перетаскивание в winzip или щелчок правой кнопкой мыши по файлам и winzip ‘add to zip …’

Затем в winzip:

Действия — Разделить внизу из ‘размер части’ выберите ‘другой размер’, затем введите 20 и выберите МБ

Готово!


В winzip : Добавьте файлы в zip-архив, либо запустив winzip и добавив, либо перетащив в winzip, либо щелкнув правой кнопкой мыши файлы и winzip ‘добавить в zip …’

Затем в winzip:

Действия — Разделить нижнюю часть выбора «размер детали» другой размер ‘, затем введите 20 и выберите МБ

Готово!


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

  zip -s 20m -r myzip.zip mydir  

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


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

  zip -s 20m -r myzip.zip mydir  

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


По сути, вы предлагаете вариант Задачи о рюкзаке, с добавленной особенностью, заключающейся в том, что из-за сжатия файла вы не начинаете знать, сколько из вашего 20-мегабайтного «рюкзака» будет занимать каждый элемент.

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

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

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


То, что вы предлагаете, по сути вариация задачи о ранце с добавленным поворотом, заключающимся в том, что из-за сжатия файла вы не начинаете знать, сколько из вашего 20-мегабайтного «рюкзака» займет каждый элемент.

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

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

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


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

Его можно запустить следующим образом:

  zipsplit bigfile.zip -n 20000000  

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

Обновление: Кажется, что есть также двоичные файлы для Windows на info-zip.org, в частности в ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn-x64.zip для Win 64.


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

Его можно запустить следующим образом:

  zipsplit bigfile. zip -n 20000000  

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

Обновление: Похоже, что есть также двоичные файлы для Windows на info-zip.org, в частности в ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn-x64.zip для Win 64.


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

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

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

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


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

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

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

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


Я знаю, что это старый поток, но я только что сделал это с помощью 7-zip.

Вам необходимо использовать параметр «Разделить на объем»:


Я знаю, что это старый поток, но я только что сделал это с помощью 7-zip.

Вам нужно использовать Параметр «Разделить на объем»:


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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

Это старый продукт, который я нашел в Интернете.

Может сработать. Обязательно выберите нестандартный размер 20 м справа сторона окна.


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

Это старый продукт, который я нашел при поиске в Интернете.

Может сработать. Обязательно выберите нестандартный размер 20 м на правая часть окна.

Оцените статью
techsly.ru
Добавить комментарий