Dekompresja / Kompresja zip i unzip dzielenie i scalanie plików pod konsolą

Ostatnio podczas kopiowania dużego pliku ( Instalka sytemu OS X Mavericks ) na zewnętrzny dysk ( FAT32 ) z uwagi na wielkość pliku, nie można było go skopiować ( ograniczenie systemu plików FAT32 ). A że akurat pod ręką nie miałem innego, trzeba było szybko podzielić sobie ten plik na mniejsze kawałki. W tym wypadku wykorzystałem konsolowy programik zip i unzip.

Oczywiście przykłady działają nie tylko na komputerach Macintosh z OS X ale na systemach Linux / UNIX itp.

Zwykła kompresja/dekompresja pliku dla przypomnienia 🙂

Prosta kompresja ZIP do pliku archiwum.zip katalogu skompresuj_mnie

user@local:$ zip -r -9 archiwum.zip /skompresuj_mnie

Opcje:
-r : kompresuje pliki włączając w to podkatalogi ( rekursywnie )
-X : nie bierze pod uwagę plików niewidocznych typu: .Spotlight-V100, .DS_Store itp.
-9 : stopień kompresji ( 0 – brak kompresji, 9 – maksymalna kompresja )

Dekompresja:

user@local:$ unzip archiwum.zip

Dzielenie pliku na mniejsze kawałki

user@local:$ zip -s 1024m -r -9 archiwum.zip /sciezka/duzy_plik.app

Opcja -s z parametrem liczbowym – w naszym przypadku 1024m oznacza, że pliki mają być dzielone na porcje 1024MB. Literka m na końcu liczby oznacza oczywiście MegaBajty.

Scalanie podzielonych plików całość

Tutaj sprawa ze scalaniem plików w jedność nieco się komplikuje, gdyż unzip nie ma takiej opcji aby dekompresował plik po pliku ze scalaniem.

Ale są inne możliwości, pierwsza z nich to wykorzystanie naszego programu zip do scalenia plików w jeden plik zip:

user@local:$ zip -FF archiwum.zip --out archiwum-full.zip

Gdzie archiwum.zip to pierwszy podzielony plik, kolejne pliki mają końcówki z1, z2, itd.

Druga opcja, polega na scaleniu ( konkatenacji ) plików za pomocą cat:

user@local:$ cat archiwum.z* > archiwum-full.zip

Teraz mając scalone archiwum, możemy już normalnie zdekompresować plik, tak jak to pokazałem na samym początku tego postu.

Dodaj komentarz