Wskaż program systemu Linux, służący do kompresji danych.
A. tar
B. gzip
C. arj
D. shar
Pytanie z egzaminu CKE, czerwiec 2018 (arkusz EE.08-X-18.06).
gzip to właściwy wybór, bo jest klasycznym narzędziem linuksowym służącym bezpośrednio do kompresji danych. Program tworzy zwykle pliki z rozszerzeniem .gz i korzysta z algorytmu DEFLATE, opisanego m.in. w RFC 1951, a format pliku gzip jest opisany w RFC 1952. W praktyce używa się go bardzo często do zmniejszania rozmiaru logów, zrzutów tekstowych, kopii konfiguracji czy pojedynczych plików, np. gzip system.log utworzy system.log.gz. Do rozpakowania służy gunzip albo gzip -d. W administracji Linuksem spotkasz też połączenie tar + gzip, czyli archiwum .tar.gz lub .tgz, gdzie tar zbiera wiele plików w jeden strumień, a gzip dopiero ten strumień kompresuje. To ważne rozróżnienie. Z mojego doświadczenia najwięcej pomyłek bierze się właśnie z mylenia archiwizacji z kompresją. Dobrą praktyką jest też sprawdzanie archiwów poleceniem gzip -t oraz unikanie ponownej kompresji plików już skompresowanych, jak JPG, MP4 czy ZIP, bo zysk będzie mały albo żaden.
W tym pytaniu łatwo pomylić narzędzia archiwizujące z narzędziami kompresującymi, bo w codziennej pracy często występują razem. tar jest bardzo popularny w Linuksie, ale sam z siebie nie kompresuje danych. Jego podstawowym zadaniem jest utworzenie archiwum, czyli połączenie wielu plików i katalogów w jeden plik tar. Dopiero po użyciu opcji takich jak -z można podłączyć gzip i wtedy powstaje znane archiwum .tar.gz. Czyli tar jest jak pudełko na pliki, a gzip jest mechanizmem, który to pudełko zmniejsza. Moim zdaniem to jedno z najważniejszych rozróżnień przy pracy w terminalu, bo potem łatwiej zrozumieć, co naprawdę robi polecenie tar -czf kopia.tar.gz katalog. shar także nie jest typowym kompresorem. Tworzy tzw. shell archive, czyli archiwum w postaci skryptu powłoki, które może samo odtworzyć zapisane pliki. To rozwiązanie historyczne, używane kiedyś np. przy przesyłaniu plików tekstowych przez pocztę lub grupy dyskusyjne, ale nie służy głównie do zmniejszania rozmiaru danych. arj bywa kojarzony z kompresją, bo rzeczywiście jest archiwizerem z kompresją, znanym szczególnie ze starszych systemów DOS i Windows. Jednak nie jest standardowym, typowym programem systemu Linux w takim sensie jak gzip, który jest powszechnie dostępny w dystrybucjach i używany przez narzędzia systemowe, rotację logów oraz skrypty administracyjne. Typowy błąd myślowy polega na tym, że każde narzędzie robiące archiwum traktuje się jako kompresor. W praktyce administracyjnej warto pytać: czy program tylko pakuje wiele plików w jeden, czy faktycznie zmniejsza rozmiar danych za pomocą algorytmu kompresji. Dla tej roli najbardziej pasuje gzip.