Я ищу способ заархивировать большую папку во множество файлов размером 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. Я понял, что это тоже можно сделать вручную , если принять следующие допущения (это не чисто техническая проблема — это скорее организационная проблема, чем техническая):
- Поскольку OP требует, чтобы каждый zip-файл мог извлекать все свое содержимое независимо , файлы, которые превосходят 20 МБ после архивирования необходимо обработать одним из следующих способов:
- они не должны учитываться и поэтому должны быть разделены;
- они должны быть разделить на тома по 20 МБ, как предлагали другие ответы (winzip, 7-zip), и полученные файлы нельзя использовать независимо (нарушая это предположение 1 st ).
- Размер заархивированных файлов не обязательно должен составлять ровно 20 МБ.
- Если более важно иметь несколько zip-файлов с размером приблизительно 20 МБ, можно выполнить сжатие. выполняется без сжатия.
Используя этот метод с 7-zip (интерфейс Windows и te rminal) Я сохранил сжатие во вновь созданных zip-файлах.
Начните с сжатия всех файлов в один zip-файл в пустой папке (с желаемым методом сжатия), например ALL.zip
и откройте его:
- Упорядочите список файлов и папок, щелкнув размер или размер в упаковке (сжатый) column;
- Начните с наименьшего размера и выберите файлы/папки, которые вы хотите сгруппировать в zip;
- Нажмите
Test
, чтобы подтвердить их общий размер (это учитывает их сжатие): - Нажмите
Извлечь
илиКопировать
при добавлении в конец пути извлечения имени новой папки (например:plu_8MB
) - Внутри zip
ALL.zip
удалите только что извлеченные файлы (избегая ошибочного повторного извлечения) и перейдите к следующей папке или подмножеству файлов; - Повторите одно из следующего:
- шаги с 1 по 5, если вы планируете создать независимый zip-файл;
- шаги с 1 по 3 и повторно используйте одно и то же имя папки (шаг 4), пока их общий размер не станет приблизительно 20 МБ;
- После того, как вы извлекли все содержимое
ALL.zip
в независимые папки, удалите этот zip и откройте терминал в этой папке; -
Тип:
для/F% i in ('dir/b') do "C: Program Files 7- zip 7z.exe "a -tzip% i.zip% i
Нажмите ENTER , и это создаст zip-файл для каждой папки, вы только что извлекли.
Дэйв, похоже, предоставил самое близкое программируемое решение к чему запросил OP. Я понял, что это тоже можно сделать вручную , если принять следующие допущения (это не чисто техническая проблема — это скорее организационная проблема, чем техническая):
- Поскольку OP требует, чтобы каждый zip-файл мог извлекать все свое содержимое независимо , файлы, которые превосходят 20 МБ после архивирования необходимо обработать одним из следующих способов:
- они не должны учитываться и поэтому должны быть разделены;
- они должны быть разделить на тома по 20 МБ, как предлагали другие ответы (winzip, 7-zip), и полученные файлы нельзя использовать независимо (нарушая это предположение 1 st ).
- Размер заархивированных файлов не обязательно должен составлять ровно 20 МБ.
- Если более важно иметь несколько zip-файлов с размером приблизительно 20 МБ, можно выполнить сжатие. выполняется без сжатия.
Используя этот метод с 7-zip (интерфейс Windows и te rminal) Я сохранил сжатие во вновь созданных zip-файлах.
Начните с сжатия всех файлов в один zip-файл в пустой папке (с желаемым методом сжатия), например ALL.zip
и откройте его:
- Упорядочите список файлов и папок, щелкнув размер или размер в упаковке (сжатый) column;
- Начните с наименьшего размера и выберите файлы/папки, которые вы хотите сгруппировать в zip;
- Нажмите
Test
, чтобы подтвердить их общий размер (это учитывает их сжатие): - Нажмите
Извлечь
илиКопировать
при добавлении в конец пути извлечения имени новой папки (например:plu_8MB
) - Внутри zip
ALL.zip
удалите только что извлеченные файлы (избегая ошибочного повторного извлечения) и перейдите к следующей папке или подмножеству файлов; - Повторите одно из следующего:
- шаги с 1 по 5, если вы планируете создать независимый zip-файл;
- шаги с 1 по 3 и повторно используйте одно и то же имя папки (шаг 4), пока их общий размер не станет приблизительно 20 МБ;
- После того, как вы извлекли все содержимое
ALL.zip
в независимые папки, удалите этот zip и откройте терминал в этой папке; -
Тип:
для/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 м на правая часть окна.