bzip2

Kompresuje lub dekompresuje pliki w formacie .bz2 (lepsza kompresja niż gzip).

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 (odpowiednik bunzip2).
  • -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; -9 to najlepsza kompresja (domyślna), -1 najszybsza.

Przykłady użycia

  • bzip2 backup.sql — pakuje plik do backup.sql.bz2 i usuwa oryginał.
  • bzip2 -dk dane.bz2 — rozpakowuje dane.bz2 i 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: tar robi archiwum, a -j przepuszcza je przez bzip2.
  • 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.