bzip2 to klasyczny kompresor plików dla Linuksa, który pakuje dane do formatu .bz2, używając algorytmu Burrowsa-Wheelera. W praktyce daje zauważalnie lepszy współczynnik kompresji niż gzip, ale płacisz za to czasem i obciążeniem procesora. Domyślnie działa na pojedynczych plikach (nie na katalogach jak tar) i kasuje oryginał po spakowaniu, więc warto wiedzieć, jak to zachowanie okiełznać.
Składnia i najważniejsze opcje
Podstawowa forma to bzip2 [opcje] plik.... Domyślnie bzip2 kompresuje, a do dekompresji służy flaga -d lub osobne polecenie bunzip2.
-d— dekompresuje plik.bz2(odpowiednikbunzip2).-z— wymusza kompresję (przydatne, gdy chcesz być jednoznaczny).-k— zachowuje plik wejściowy zamiast go kasować.-c— wypisuje wynik na standardowe wyjście, oryginał zostaje nietknięty.-f— wymusza nadpisanie istniejących plików i przetwarza też pliki, które nie wyglądają na.bz2.-t— testuje integralność archiwum bez rozpakowywania.-v— tryb gadatliwy, pokazuje współczynnik kompresji.-1…-9— rozmiar bloku od 100 kB do 900 kB;-9to najlepsza kompresja (domyślna),-1najszybsza.
Przykłady użycia
bzip2 backup.sql— pakuje plik dobackup.sql.bz2i usuwa oryginał.bzip2 -dk dane.bz2— rozpakowujedane.bz2i zachowuje archiwum (-k).bzip2 -c log.txt > log.txt.bz2— kompresuje na stdout, oryginał zostaje na miejscu.tar -cjf strona.tar.bz2 /var/www/strona— pakuje cały katalog:tarrobi archiwum, a-jprzepuszcza je przezbzip2.bzip2 -t archiwum.bz2— sprawdza, czy plik nie jest uszkodzony, zanim go komuś wyślesz.
Częste błędy i pułapki
Najczęstsza niespodzianka: bzip2 domyślnie kasuje plik źródłowy po kompresji. Jeśli chcesz mieć i jedno, i drugie, używaj -k albo -c. Druga pułapka to przekonanie, że spakujesz nim katalog — nie spakujesz. bzip2 obrabia tylko pliki, więc do drzewa katalogów potrzebujesz tar (stąd .tar.bz2). Pamiętaj też, że -9 jest domyślne, więc dokręcanie kompresji niewiele zmieni, za to na słabym sprzęcie poczujesz różnicę w czasie. Na koniec: do bardzo dużych plików rozważ pbzip2, który zrównolegla pracę na wiele rdzeni — zwykły bzip2 jest jednowątkowy.
Powiązane komendy: bunzip2, bzcat, bzip2recover, gzip, xz, zstd oraz tar.