Rodzina zip: Międzyplatformowa kompresja plików

Jeśli regularnie korzystamy z kompresji plików, powinniśmy zainstalować program zip.


Bruce Byfield

Kompresja plików pod Linuksem jest zwykle obsługiwana przez polecenia tar, gzip lub bzip2. Jednak dodatkowo możemy też sięgnąć po zip [1], czyli wieloplatformowy program wspierany przez mnóstwo skryptów i narzędzi. Jeśli mamy do czynienia z kimś, kto korzysta z innego systemu operacyjnego, zip jest często idealnym narzędziem do wykonania kompresji. Przyznać trzeba, że pod Linuksem zip nie jest zbyt popularny, gdyż przez jakiś czas nie wspierał 64-bitowego przetwarzania i nie mógł obsługiwać plików większych niż 2 GB. Jednak dzisiaj zip, gzipi bzip2 są z grubsza podobne funkcyjnie, jak też strukturalnie. Wszystkie trzy mają podobne opcje, chociaż nie zawsze nazywają się one tak samo, a także historycznie dostarczały alternatywnych nazw poleceń dla niektórych funkcji, takich jak unzipi ungzip, które duplikowały standardowe opcje i były łatwiejsze do zapamiętania. f1-basic Rysunek 1: Struktura polecenia zip jest prosta, chociaż z niecodzienną kolejnością.
Pomimo tych podobieństw, ani zip, ani gzip nie rozpoznają rozszerzeń drugiego programu, chociaż oba mogą korzystać na wzajem ze swoich plików, jeśli ręcznie zmieni się rozszerzenie. Korzystając z zip, możemy dodać opcję --bzip, aby dołączyć opcje z programu bzip, dzięki czemu możemy uzyskać, przynajmniej w teorii, lepszą kompresję plików binarnych. f2-comment Rysunek 2: zip posiada możliwość dodawania jednowierszowych komentarzy do każdego pliku. f3-zipcmp Rysunek 3: zipcmp porównuje pliki w archiwum. Podstawy zipa Jeśli pracowaliśmy z innymi programami do kompresji, przesiadka na zipa będzie prosta. Jedyną niecodzienną cechą jest to, że nazwa nowego archiwum występuje po poleceniu i opcjach, a na końcu podajemy listę plików do archiwizacji, ze spacją jako separatorem:

zip OPCJE NOWE-ARCHIWUM.zip PLIKI

Pliki nie są kasowane, kiedy dodajemy je do archiwum (Rysunek 1). Jeśli chcemy, możemy dodać opcję --recurse-patterns (-R), która automatycznie dodaje podkatalogi. Możemy też dostosować prędkość i efektywność kompresji, za pomocą -LICZBA, gdzie 0 oznacza brak kompresji, 1 to szybki proces z minimalną kompresją, a 9 najwolniejsze działanie z najlepszą kompresją. Najwyższy osiągany poziom kompresji waha się pomiędzy 2:1 a 3:1 dla tekstu, podczas gdy dla plików binarnych jest znacznie gorszy, na poziomie 3:2 lub 4:3. Jednak opcje te to tylko początek. Możemy skorzystać z --exclude (-x) do podania listy plików, które nie powinny znaleźć się w archiwum lub --include (-i) do określenia, że tylko dane pliki mają być brane pod uwagę. Ze względów bezpieczeństwa możemy dodać hasło: --password (-P) CIĄG_ZNAKÓW, lub szyfrowanie: --encrypt (-e), chociaż bezpieczeństwo, biorąc pod uwagę nowoczesne standardy, nie stoi tu na wysokim poziomie (patrz zipcloak poniżej). Kolejną opcją jest --entry-comments (-c), która pozwala opisać każdy plik w archiwum za pomocą jednowierszowego tekstu, co odczytać można, korzystając z narzędzia zipnote (Rysunek 2). Kiedy przybywa opcji, warto dodać --test (-T), aby upewnić się, że nic niezwykłego się nie wydarzy. Opcje zipa tak naprawdę sprawdzają się też po utworzeniu archiwum. Możemy skorzystać z --delete (-d) lub unzip, aby usunąć pliki z istniejącego archiwum oraz z --grow (-g), aby dodać pliki. Możemy też wybrać --copy-entries (-U), aby utworzyć nowe archiwum zawierające pliki z już istniejącego. Jeśli tworzymy archiwa do kopii zapasowej, możemy dodać opcje --update (-u), --filesync (-FS) lub --freshen (-f), aby zaktualizować kopię. Jeśli archiwum zostanie uszkodzone, warto spróbować je naprawić za pomocą --fix (-F). Jednak wiele opcji zipa wymaga większej ilości informacji. W rezultacie, jedyne co możemy zrobić w tym artykule, to wskazać możliwości. Narzędzia zip Wokół zipa pojawiła się plejada małych skryptów i narzędzi. Ich użyteczność jest czasami ograniczona przez to, że nie obsługują plików większych niż 2 GB. Dotyczy to również większych plików utworzonych w najnowszej wersji zipa, wliczając w to pliki utworzone w środowisku graficznym. Jednak nawet biorąc pod uwagę to ograniczenie, wspomniane narzędzia mogą być przydatne, zwłaszcza przy pracy z plikami tekstowymi. Niektóre są instalowane razem z zipem, podczas gdy jedno czy dwa musimy dodać do systemu oddzielnie. f4-zipcloak Rysunek 4: Korzystając z zipcloaka, zarządzamy szyfrowaniem plików zip. zipcmp Podobnie jak diffw przypadku plików tekstowych, zipcmp porównuje pliki w archiwach zip. Polecenie jest tak proste, że nie posiada oddzielnej strony podręcznika systemowego lub opcji pomocy. Wszystko, co musimy zrobić, to wydać polecenie i dodać nazwy dwóch plików do porównania. Pierwszy plik oznaczony jest minusem, a drugi plusem (Rysunek 3). zipcloak Pliki zip możemy zabezpieczyć hasłem i zaszyfrować za pomocą zip --encrypt (-e) opcje PLIK_WYJŚCIOWY lub zipcloak PLIK_WYJŚCIOWY (Rysunek 4). Jeśli niezaszyfrowany plik został dodany do archiwum, to kiedy wpiszemy hasło, zostanie on zaszyfrowany. Nieszyfrowany plik wyjściowy jest zapisywany w oryginalnym katalogu, chyba że skorzystamy z opcji -O i podamy inną lokalizację. Za pomocą opcji -d możemy odszyfrować całe archiwum lub, jeśli nie mamy hasła, skopiować je. Ze względu na wiekowość programu obsługuje on jedynie archiwa mniejsze niż 2 GB. Strona podręcznika systemowego wyjaśnia, że szyfrowanie jest wykonywane przez program domeny publicznej, który oferuje niski poziom szyfrowania. Jednak plik zawierający szczegóły na temat programu nie jest już dostępny. W przypadku braku większej ilości informacji możemy oprzeć się na haśle. zipgrep zipgrep wyszukuje wzorców w archiwum zip. Może skorzystać z dowolnej maski wspieranej przez egrep, na przykład * odpowiada dowolnej liczbie znaków, a ? to pojedynczy znak. zipgrep nie może być wykorzystany do wyszukiwania nazw plików – przeszukuje jedynie ich zawartość. zipinfo zipinfo wyświetla atrybuty wszystkich plików w archiwum zip. Są to między innymi uprawnienia, nazwa, data utworzenia, rozmiar przed kompresją i po niej oraz jej procent (Rysunek 5). zipmerge zipmerge dodaje archiwum źródłowe do docelowego. Korzystajmy z tego programu ostrożnie, gdyż jeśli w archiwum docelowym znajdują się pliki nazwane tak samo jak niektóre pliki archiwum źródłowego, to zostaną nadpisane. Możemy ograniczyć szansę na przypadkowe nadpisanie za pomocą opcji -i, dzięki czemu będziemy weryfikować każdy taki przypadek. Z kolei opcja -S automatycznie wstrzyma nadpisywanie plików o tym samym rozmiarze i nazwie. Unikajmy w tym przypadku opcji -I, czyli ignorowania rozmiaru liter. zipmerge nie jest instalowany automatycznie. Kiedy łączymy archiwa z jego pomocą, oba oryginalne pliki pozostają, a jedyny ślad po działaniu programu to większy rozmiar pliku docelowego. zipnote zipnote jest wykorzystywany do czytania i edycji komentarzy w archiwum. Aby odczytać komentarz w archiwum, przekazujemy standardowy strumień wyjścia do pliku:

zipnote NAZWA-PLIKU.zip > NAZWA-PLIKU.tmp

Następnie otwieramy NAZWA-PLIKU.tmp, odczytujemy i edytujemy. Potem dodajemy zaktualizowane komentarze do pliku zip:

zipnote -w NAZWA-PLIKU.zip < NAZWA-PLIKU.tmp

 
zipsplit zipsplit dzieli istniejące archiwum na mniejsze części, tworząc plik indeksowy, z pomocą którego możemy znowu je połączyć (Rysunek 6). Możemy chcieć podzielić archiwum z dwóch powodów: aby ograniczyć utratę danych ze względu na uszkodzenia plików lub aby przechowywać pliki na kilku wolumenach. Domyślny rozmiar pliku to 36 KB, ale możemy go zmieniać za pomocą opcji -n. Maksymalny rozmiar to 2 GB. Jeśli zmieniamy rozmiar pliku, powinniśmy też dodać opcję -t, aby wykonać pusty przebieg i sprawdzić, jak tworzone będą pliki. Za pomocą zipmerge złożymy od nowa oryginalne archiwum. Alternatywą dla zipsplit jest opcja --split-size. f5-zipinfo Rysunek 5: zipinfo dostarcza wygodnego podglądu atrybutów plików w archiwum zip. f6-zipsplit Rysunek 6: zipsplit dzieli archiwum na części. W wyniku działania programu otrzymamy pliki z ośmioznakowymi nazwami, każdy zakończony numerem. Pierwsze siedem znaków odpowiada nazwie oryginalnego pliku. Wszechstronne rozwiązanie Artykuł ten zaledwie sygnalizuje fragment możliwości zipa. Polecenie to jest niemal tak stare jak komputery osobiste, a jego strona podręcznika systemowego zawiera ponad 1900 wierszy. Jednak nawet ten przegląd daje nam pewne pojęcie o jego funkcjach. Chociaż nie jest to tradycyjny program Uniksa, to jeśli regularnie korzystamy z kompresji, warto przyjrzeć się zipowi. A jeśli wysyłamy pliki do ludzi pracujących na innych systemach operacyjnych, będą nam wdzięczni, że z niego korzystamy.  Info [1] zip: https://linux.die.net/man/1/zip Autor: Bruce Byfield jest dziennikarzem IT, autorem artykułów i redaktorem specjalizującym się w tematyce FOSS. Oprócz pisania, prowadzi kursy komputerowe, zarówno na żywo, jak i poprzez platformy e-learningowe. W wolnych chwilach pisze o sztuce Wybrzeża Północno-Zachodniego (http://brucebyfield.wordpress.com). Jest też współzałożycielem Prentice Pieces, bloga na temat pisania i fantasy, który znaleźć można pod adresem https://prenticepieces.com/.

Zaloguj się, aby dodać komentarz

Nie masz konta? Zarejestruj się »

Zobacz także

Skuteczne narzędzia do wykrywania uszkodzonych podzespołów

pobierz

Wykrywanie i usuwanie niechcianych programów

pobierz

Polecane artykuły

Array ( [docId] => 50147 )

Array ( [docId] => 50147 )