gzip

Kompresuje lub dekompresuje pojedyncze pliki w formacie gzip.

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 polecenia gunzip).
  • -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: -1 najszybciej, -9 najmocniej; 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 — kompresuje raport.log do raport.log.gz i usuwa oryginał.
  • gzip -k -9 dump.sql — pakuje z maksymalną kompresją, zostawiając nietknięty plik dump.sql.
  • gzip -d archiwum.gz — rozpakowuje plik z powrotem do archiwum (to samo co gunzip 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.