Mam skrypt, który zipuje pliki z folderu. Chcę się upewnić, że skompresowany plik nie ma więcej niż 10 MB. Jeśli rozmiar jest większy niż 10 MB, powinien utworzyć kolejny plik ZIP.
Czy istnieje jakakolwiek komenda (lub inna metoda), której można użyć w tym celu?
Odpowiedzi:
Możesz użyć funkcji „ dzielenia archiwum ” samego „ zip ” za pomocą opcji „ --split-size ”.
Ze strony „zip” („
man zip
”):Aby utworzyć podzielone archiwum zip , możesz wykonać następujące czynności („
-r
” to przełącznik „rekurencyjny” obejmujący podkatalogi katalogu):$ zip -r -s 10m archive.zip directory/
Aby rozpakować plik , strona
zip
podręcznika „ ” wyjaśnia, że należy użyć przełącznika „-s 0” ”:Tak więc najpierw „odznaczasz” plik ZIP za pomocą przełącznika „-s 0”:
$ zip -s 0 archive.zip --out unsplit.zip
... a następnie rozpakuj nieoznaczony plik:
$ unzip unsplit.zip
źródło
Otrzymasz wiele plików:
Które następnie można rozpakować za pomocą:
źródło
Oto, jak to zrobiłem dla pliku 5 GB (podzielony na 1 GB vs 10 MB, jak poprosił OP) ...
Przykład: Aby podzielić plik 5 GB na 1 GB, aby skopiować go na FAT32 USB (nazwa pliku „FIVE_GB_FILE.ISO”)
Krok 1: skompresuj plik (bez kompresji, ten sam katalog co źródło)
Krok 2 : podziel plik zip 5 GB na pliki zip 1 GB
Voila ... powinieneś mieć następujące pliki 1GB (ORAZ oryginał ORAZ zip z kroku 1)
źródło