Szukam sposobu na spakowanie dużego folderu do wielu plików 20 Mb. Nie chcę dzielenia pliku zip na mniejsze. Zamiast tego chcę pogrupować niektóre pliki / foldery podrzędne w grupy, które po spakowaniu mają rozmiar 20 Mb.
Jeśli wiesz, jak to zrobić, pomóż!
Aktualizacja
Muszę użyć samych mniejszych spakowanych plików, które można rozpakować samodzielnie.
Mam zamiar użyć virustotal.com do przeskanowania dużego folderu.
Odpowiedzi:
W winzip: dodaj pliki do zipu, uruchamiając winzip i dodając lub przeciągnij i upuść do winzip lub kliknij prawym przyciskiem myszy pliki i winzip „dodaj do zip ...”
Następnie w winzip:
Działania - Podziel u dołu „rozmiaru części” wybierz „inny rozmiar”, a następnie umieść 20 i wybierz mb
Gotowy!
źródło
To, co proponujesz, jest zasadniczo odmianą problemu plecakowego, z dodatkowym zwrotem, że dzięki kompresji plików nie zaczynasz wiedzieć, ile zajmie twój „plecak” 20 MB na każdy przedmiot.
Oczywiście trywialnym rozwiązaniem byłoby po prostu skompresowanie każdego pliku osobno, ale to nie zmniejsza liczby plików, więc podejrzewam, że nie byłoby to zadowalające rozwiązanie.
Gdybym mi przedstawił ten problem, przypuszczam, że zacznę od kompresji każdego pliku osobno do tymczasowej lokalizacji (lub w pamięci, bez zapisywania ich na dysku), tak aby uzyskać przybliżony rozmiar skompresowanego dla każdego z nich. Dzięki tym informacjom można by następnie zdecydować, które pliki powinny zostać zgrupowane przy użyciu dowolnego standardowego podejścia do problemu plecaka i utworzyć rzeczywiste pliki zip.
Zakładając, że masz do dyspozycji język skryptowy i wiesz, jak go używać, oczekiwałbym, że takie podejście będzie dość łatwe do zautomatyzowania; zrobienie tego ręcznie byłoby dość żmudne, jeśli masz więcej niż garść plików do poradzenia sobie ...
źródło
Pozwolenie zipowi na podział będzie o wiele łatwiejsze do zautomatyzowania niż próba samodzielnego zrozumienia tego. Jeśli Twoim celem jest 20 MB plików zip, musisz oszacować skompresowany rozmiar każdego pliku przed dodaniem go do archiwum. Czy istnieje powód, dla którego nie chcesz po prostu pozwolić zipowi wykonać podziału za Ciebie? Oto, jak zrobiłbyś to z gnu zip:
Spowoduje to utworzenie 20 MB spakowanych plików z przyrostowymi numerami indeksów w nazwie pliku.
źródło
W systemie Linux istnieje program o nazwie zipsplit , który właśnie to robi. Jest to część standardowego pakietu zip.
Można go uruchomić w następujący sposób:
podzielić plik bigfile.zip na części o maksymalnej wielkości 20 MB. I pamiętaj, że poszczególne zawarte pliki nie zostaną podzielone. W ten sposób każdą część można rozpakować indywidualnie. Co oznacza również, że jeśli istnieje jeden plik, który nie mieści się w maksymalnym rozmiarze części, podział nie będzie możliwy.
Aktualizacja: Wygląda na to, że istnieją również pliki binarne dla systemu Windows na info-zip.org, szczególnie na ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn-x64.zip dla Win 64.
źródło
Obawiam się, że nie jest to łatwa perspektywa.
Niedawno napisałem skrypt do gromadzenia plików w podkatalogach nie większych niż 4,3 GB w celu łatwego przechowywania na DVD, ale wszystko to było nieskompresowane.
Robiąc to z kompresją - teraz jest wyzwanie. Nie można przewidzieć rozmiaru plików po kompresji - wszystko, co możesz zrobić, to dodawać pliki do pliku zip w malejącej kolejności, aż przekroczy 20 MB, a następnie usuń ostatni plik, zastępując go mniejszym, aż spadnie poniżej 20 MB . Jeśli wyczerpiesz wszystkie pliki, a nadal jest to> 20 MB, po prostu upuść ostatni plik i przejdź do następnego pliku zip.
Dość skomplikowany skrypt i raczej powolny, bolesny proces.
źródło
Wiem, że to stary wątek, ale właśnie zrobiłem to z 7-suwakiem .
Musisz użyć opcji „Podziel na wolumin”:
źródło
Wydawało się, że Dave zapewnia najbliższe programowalne rozwiązanie tego, czego zażądał OP. Doszedłem do wniosku, że można to zrobić również ręcznie , jeśli przyjmiemy następujące założenia (nie jest to czysty problem techniczny - jest to raczej problem organizacyjny niż techniczny):
Używając tej metody z 7-zip (interfejs Windows i terminal) zachowałem kompresję w nowo wygenerowanych plikach zip.
Zacznij od skompresowania wszystkich plików do jednego pliku zip w pustym folderze (z żądaną metodą kompresji), np.
ALL.zip
I otwórz go:Test
przycisk, aby potwierdzić ich zbiorowy rozmiar (dotyczy to ich kompresji):Extract
lubCopy
podczas dodawania na końcu ścieżki rozpakowywania nazwy nowego folderu (np .plu_8MB
:)ALL.zip
zip usuń właśnie wyodrębnione pliki (unikając pomyłek w ponownym wyodrębnieniu) i przejdź do następnego folderu lub podzestawu plików;ALL.zip
do niezależnych folderów usuń ten zip i otwórz terminal w tym folderze ;Rodzaj:
Naciśnij, ENTERa to wygeneruje plik zip dla każdego właśnie wyodrębnionego folderu.
źródło