gzip to klasyczny uniksowy kompresor, który zmniejsza rozmiar pojedynczych plików, zapisując je w formacie gzip (rozszerzenie .gz). Domyślnie działa „destrukcyjnie” w dobrym tego słowa znaczeniu: kompresuje plik, a oryginał kasuje, zostawiając tylko wersję skompresowaną. Świetnie nadaje się do logów, dumpów bazy czy pojedynczych dużych plików tekstowych. Pamiętaj jednak o jednej rzeczy: gzip sam w sobie nie pakuje katalogów ani wielu plików w jedno archiwum, od tego jest tar.
Składnia i najważniejsze opcje
Podstawowa składnia wygląda tak: gzip [OPCJE] PLIK...
-d— dekompresuje plik (odpowiednik osobnego poleceniagunzip).-k— zachowuje oryginalny plik zamiast go kasować (od gzip 1.6).-r— działa rekurencyjnie, kompresując pliki w katalogu i podkatalogach (każdy plik osobno!).-1…-9— poziom kompresji:-1najszybciej,-9najmocniej; domyślnie-6.-c— wypisuje wynik na standardowe wyjście, nie ruszając pliku źródłowego.-l— pokazuje informacje o skompresowanym pliku (rozmiar przed i po, stopień kompresji).-t— testuje integralność skompresowanego pliku, nie rozpakowując go.-v— tryb gadatliwy, podaje procent kompresji dla każdego pliku.
Przykłady użycia
gzip raport.log— kompresujeraport.logdoraport.log.gzi usuwa oryginał.gzip -k -9 dump.sql— pakuje z maksymalną kompresją, zostawiając nietknięty plikdump.sql.gzip -d archiwum.gz— rozpakowuje plik z powrotem doarchiwum(to samo cogunzip archiwum.gz).gzip -c baza.sql > baza.sql.gz— kompresuje do strumienia i zapisuje pod własną nazwą, oryginał zostaje.gzip -tv backup.gz— sprawdza, czy skompresowany backup nie jest uszkodzony, zanim na nim polegniesz.
Częste błędy i pułapki
Najczęstsza pomyłka: oczekiwanie, że gzip spakuje cały katalog w jeden plik. Nie spakuje. Z opcją -r skompresuje każdy plik z osobna, więc dostaniesz setki .gz zamiast jednego archiwum. Do paczek użyj tar -czf paczka.tar.gz katalog/, gdzie tar łączy pliki, a gzip robi kompresję.
Druga pułapka: domyślne kasowanie oryginału. Jeśli skompresujesz coś bez -k i zabraknie miejsca na dysku w trakcie, możesz zostać z niczym. Na produkcji bezpieczniej trzymać się -k albo wariantu z -c i przekierowaniem.
Drobiazg, który potrafi namieszać przy porównywaniu sum kontrolnych: domyślnie gzip zapisuje w nagłówku oryginalną nazwę i znacznik czasu. Flaga -n to pomija, dzięki czemu ten sam plik daje powtarzalny wynik. Zwróć też uwagę, że gzip nadpisze istniejący .gz dopiero po pytaniu, chyba że wymusisz to przez -f.
Powiązane komendy: gunzip, zcat, gzip vs bzip2 i xz (mocniejsza kompresja), tar (pakowanie katalogów), zless i zgrep do pracy na skompresowanych plikach.