Як застебнути велику папку в невеликі файли з обмеженням 20Mb?


10

Я шукаю спосіб застебнути велику папку у багато 20Mb файлів. Я не хочу, щоб поштовий файл розділявся на менші. Натомість я хочу згрупувати кілька підфайлів / папок у групи, що становить 20 Мбіт при блискавці.

Якщо ви знаєте, як це зробити, будь ласка, допоможіть!

Оновлення

Мені потрібно використовувати менші файли-блискавки, які можна розпакувати самостійно.

Мій намір - використовувати virustotal.com для сканування великої папки.


Будь-які деталі про операційну систему, яку ви використовуєте?
Пітто

@Pitto Я використовую Windows-7
Nam G VU

Відповіді:


10

У winzip: додайте файли до zip, запустивши winzip, додавши або перетягніть у winzip або клацніть правою кнопкою миші на файли та winzip "додати до zip ..."

Потім у winzip:

Дії - розділіть внизу "розмір частини" виберіть "інший розмір", потім поставте 20 та виберіть mb

Готово!


4
Перебування на вільній стороні також 7zip прекрасно працює :)
Пітто,

3
Це розділить zip-файл, і ми не можемо використовувати розділені частини самостійно.
Нам Г ВУ

Omg, тепер я краще розумію, що ти шукаєш ... Я просто не можу знайти будь-яке рішення для вашої проблеми, то :( А як щодо використання безкоштовного і чудового Malwarebytes Antimalware для локального сканування файлів?
Pitto

6

Те, що ви пропонуєте, є по суті варіантом проблеми "Рюкзак" , з додатковим поворотом, що завдяки стисненню файлів ви не починаєте знати, скільки ваших 20-мегабайтних "рюкзаків" буде займати кожен предмет.

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

Якби мені поставили цю проблему, я вважаю, що я би почав, стискаючи кожен файл окремо до тимчасового місця (або в пам'яті, не записуючи їх на диск), просто так, щоб я міг отримати приблизний стислий розмір для кожного. За допомогою цієї інформації можна було б вирішити, які файли слід об'єднати за допомогою будь-якого зі стандартних підходів до проблеми "Рюкзак" та створити фактичні файли zip.

Якщо припустити, що у вас є доступна мова сценаріїв, і ви знаєте, як нею користуватися, я б очікував, що такий підхід буде досить простим для автоматизації; робити це вручну було б досить нудно, якщо у вас є більше, ніж кілька файлів, з якими можна мати справу ...


1
ви не можете застебнути "без стиснення"? Дивлячись на "оновлення" оп, здається, що формат файлів важливіший за стиснення.
Прайс

1
Хе ... Добрий момент. Я не розглядав використання zip як простого архіву без стискання.
Дейв Шерохман

@DaveSherohman Отже, як ми можемо це зробити тоді?
Нам Г ВУ

5

Якщо дозволити zip зробити розбиття для вас, буде набагато простіше автоматизувати, ніж намагатися розібратися в цьому самостійно. Якщо ваша мета - поштові файли 20 Мб, вам доведеться оцінити стислий розмір кожного файлу перед тим, як додати його до архіву. Чи є причина, по якій ви не хочете просто дозволити zip робити розбиття для вас? Ось як би це зробити з gnu zip:

zip -s 20m -r myzip.zip mydir

Це створить 20MB-файли-блискавки з додатковими індексними номерами у назві файлу.


4
На підставі коментаря ОП до іншої відповіді, це здається, що він не хоче, щоб zip автоматично розділяв його, оскільки тоді ви отримуєте єдиний архів, який вимагає, щоб усі файли функціонували належним чином, але він хоче, щоб кожен фрагмент був повноцінним, корисним архівом, незалежним з інших.
Дейв Шерохман

4

В 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.


3

Я не боюся перспективи.

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

Робити це стисненням - тепер є завдання. Ви не можете передбачити розмір файлів після стиснення - все, що ви могли зробити, це продовжувати додавання файлів до zip у порядку зменшення розміру, поки він не перевищить 20 Мб, а потім видалити останній файл, замінивши його на менший, поки він не опуститься нижче 20 МБ . Якщо ви вичерпали всі файли, і вони все ще> 20 Мб, просто киньте останній файл і перейдіть до наступного ZIP.

Досить хитрий сценарій та досить повільний, болісний процес.


Ось моя думка. Чому б просто не згрупувати файли / папки в нерозпаковану групу <= 20 Мб, а потім зашпаркувати їх? Нам не потрібно, щоб файли результатів .zip були рівно 20Mb кожен.
Нам Г ВУ

Можливо - не впевнений, як ви будете робити це в Windows із написанням сценаріїв - я раніше використовував Perl в Linux.
Majenko

2

Я знаю, що це стара нитка, але я просто зробив це з 7-блискавкою .

Потрібно скористатися параметром "Розділити на об'єм":

введіть тут опис зображення


Класно. Я спробую повернутися з вами пізніше.
Нам Г ВУ

1
Не працює для цього конкретного сценарію, тому що менші файли, що зберігаються, не можна розпакувати самостійно; їх треба тримати разом.
брови

2

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

  1. Оскільки ОП вимагає, щоб кожен поштовий файл мав змогу самостійно витягувати весь його вміст , з файлами, що перевищують 20 Мб, після зіпсування потрібно обробляти одним із наступних способів:
    • вони не повинні розглядатися, а тому повинні бути відокремленими;
    • їх потрібно розділити на 20 Мб томів, як запропоновано інші відповіді ( winzip , 7-zip ), і отримані файли не можна використовувати самостійно (порушуючи це перше припущення).
  2. Файли-блискавки не обов’язково повинні мати рівно 20 Мб.
  3. Якщо важливіше мати кілька поштових файлів орієнтовним розміром 20 МБ, то копіювання можна зробити без стиснення.

Використовуючи цей метод із 7-zip (інтерфейсом Windows та терміналом), я зберегла стиснення у новостворених поштових файлах.

Почніть зі з’єднання всіх файлів в один поштовий файл у порожній папці (з потрібним способом стиснення), наприклад ALL.zip, та відкрийте його:

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

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

    Натисніть, ENTERі це створить поштовий файл для кожної папки, яку ви тільки що витягли.


Для різних параметрів у рекомпресії ось документація щодо синтаксису 7zip .
CPHPython
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.