bzip2(1)                    wersja 1.0                   bzip2(1)


NAZWA
       bzip2,  bunzip2  -  sortujący  bloki kompresor/dekompresor
       plików, v1.0
       bzcat - dekompresuje pliki na standardowe wyjście
       bzip2recover - odzyskuje  dane  ze  zniszczonych  archiwów
       bzip2

SKŁADNIA
       bzip2 [-cdfkqstvzVL123456789] [nazwy_plików...]
       bunzip2 [-fkvsVL] [nazwy_plików...]
       bzcat [-s] [nazwy_plików...]
       bzip2recover nazwa_pliku

OPIS
       bzip2   kompresuje  pliki  używając  algorytmu  sortowania
       bloków Burrowsa-Wheelera i kodu Huffmana.  Kompresja  jest
       generalnie  sporo  lepsza  od konwencjonalnych kompresorów
       opartych  o  metodę  LZ77/LZ78,  i  jest  porównywalna   z
       osiągnięciami statystycznych kompresorów z rodziny PPM.

       Opcje linii poleceń są w większości bardzo podobne do tych
       z GNU gzip, ale nie są identyczne.

       bzip2  oczekuje  listy  plików  towarzyszących  parametrom
       linii  poleceń.  Każdy  plik  jest zastępowany przez swoją
       skompresowaną wersję, z nazwą "oryginalny_plik.bz2". Każdy
       skompresowany   plik   ma   ten   sam   czas  modyfikacji,
       uprawnienia i, jeśli to możliwe, właściciela co  oryginał,
       po  to,  aby te ustawienia mogły zostać odtworzone podczas
       dekompresji. Utrzymywanie nazwy plików nie jest  do  końca
       dokładne  w tym sensie, że nie ma możliwości przetrzymywa­
       nia daty, uprawnień, właściciela i  nazw  plików  na  sys­
       temach,  na  których  brakuje  tych  możliwości  lub  mają
       ograniczenia co do długości nazwy, tak np. jak MS-DOS.

       bzip2 i bunzip2 standardowo nie nadpisują istniejących już
       plików.  Jeśli chcesz aby to robiły, musisz użyć parametru
       -f.

       Jeśli nie podano żadnej nazwy pliku, bzip2  kompresuje  ze
       standardowego  wejścia  na  standardowe  wyjście. Odmiawia
       wówczas wypisywania skompresowanego wyjście  na  terminal,
       gdyż  byłoby  to  całkiem  niezrozumiałe  i  przez  to bez
       większego sensu.

       bunzip2 (lub bzip2-d) dekompresuje wszystkie podane pliki.
       Pliki,  które  nie  były  utworzone  przez  bzip2  zostaną
       wykryte i zignorowane, a na ekranie pojawi  się  komunikat
       ostrzegawczy.   bzip2  próbuje zgadnąć nazwę dla dekompre­
       sowanego pliku w następujący sposób:
              nazwa_pliku.bz2    staje się   nazwa_pliku
              nazwa_pliku.bz     staje się   nazwa_pliku
              nazwa_pliku.tbz2   staje się   nazwa_pliku.tar
              nazwa_pliku.tbz    staje się   nazwa_pliku.tar



                                                                1





bzip2(1)                    wersja 1.0                   bzip2(1)


              inna_nazwa     staje się   inna_nazwa.out
       Jeśli plik nie ma jednego z następujących  rozpoznawalnych
       rozszerzeń,  .bz2,  .bz, .tbz2 lub .tbz, to bzip2 napisze,
       że nie może zgadnąć nazwy pierwotnego pliku, i użyje  ory­
       ginalnej nazwy z dodanym rozszerzeniem .out.

       Tak   jak   kompresja,  nie  posiadająca  żadnych  plików,
       powoduje kompresję ze standardowego wejścia na standardowe
       wyjście.

       bunzip2  poprawnie zdekompresuje plik, który jest połacze­
       niem dwóch lub więcej skompresowanych  plików.  Rezultatem
       jest  połączony odpowiedni nieskompresowany plik. Obsługi­
       wane jest również sprawdzanie spójności  (-t)  połączonych
       skompresowanych plików.

       Możesz  również  kompresować  lub  dekompresować  pliki na
       standardowe wyjście używając parametru -c. W  ten  właśnie
       sposób   można   przeprowadzać   kompresję   wielu  plików
       równocześnie.  Powstałe wyniki są przesyłane  sekwencyjnie
       na  standardowe  wyjście.   W  ten  sposób kompresja wielu
       plików generuje strumień zawierający  reprezentacje  kilku
       skompresowanych  plików. Taki strumień może być zdekompre­
       sowany poprawnie tylko przez  bzip2  w  wersji  0.9.0  lub
       późniejszej.  Wcześniejsze  wersje bzip2 zatrzymają się po
       zdekmpresowaniu pierwszego pliku w strumieniu.

       bzcat (lub bzip2 -dc) dekompresuje wszystkie wybrane pliki
       na standardowe wyjście.

       bzip2  czyta argumenty ze zmiennych środowiskowych BZIP2 i
       BZIP,  w  podanej  kolejności,  i  przetwarza   je   przed
       jakimikolwiek  argumentami  przeczytanymi z linii poleceń.
       To dobra metoda na specyfikowanie standardowych  ustawień.

       Kompresja stosowana jest zawsze, nawet jeśli skompresowany
       plik jest  nieznaczniej  większy  od  pliku  oryginalnego.
       Pliki  mniejsze  niż  mniej  więcej  sto  bajtów stają się
       większe, ponieważ mechanizm kompresji  ma  stały  nagłówek
       wynoszący  około  50  bajtów.  Przypadkowe dane (włączając
       wyjście większości  kompresorów  plików)  dą  kodowane  na
       mniej więcej 8.05 bitu na bajt, dając zysk około 0.5%.

       Jako   samosprawdzenie  dla  twojej  ochrony  bzip2  używa
       32-bitowego CRC aby upewnić się, że zdekompresowana wersja
       pliku  jest  identyczna  z  oryginalną.  To  strzeże przed
       stratami w skompresowanych  danych  i  przed  niewykrytymi
       błędami  w bzip2 (na szczęście bardzo rzadkich). Możliwość
       niewykrycia utraty danych jest mikroskopijna, mniej więcej
       jedna  szansa  na cztery biliony dla każdego pliku. Uważaj
       jednak, gdyż  sprawdzenie  jest  dokonywane  przed  dekom­
       presją,  więc  dowiesz  się  tylko tego, że coś jest nie w
       porządku. Nie pomoże ci to odzyskać oryginalnych  nieskom­
       presowanych danych. Możesz użyć bzip2recover aby spróbować



                                                                2





bzip2(1)                    wersja 1.0                   bzip2(1)


       odzyskać dane z uszkodzonych plików.

       Zwracane wartości: 0 dla normalnego wyjścia, 1  dla  prob­
       lemów   technicznych  (plik  nie  znaleziony,  niewłaściwy
       parametr, błąd wyjścia/wyjścia itp.), 2 dla zasygnalizowa­
       nia  błędu skompresowanego pliku, 3 dla wewnętrznego błędu
       (np.  bug), który zmusił bzip2 do przerwania.


OPCJE
       -c --stdout
              Kompresuje lub dekompresuje na standardowe wyjście.

       -d --decompress
              Wymusza dekompresję.  bzip2, bunzip2 i bzcat są tak
              naprawdę tymi samymi  programami  i  decyzja  jakie
              akcje  będą  wykonane  jest wykonywana na podstawie
              nazwy jaka została użyta. Ten  parametr  ma  wyższy
              priorytet i wymusza na bzip2 dekompresję.

       -z --compress
              Podobne  do  -d:  wymusza kompresję, bez względu na
              sposób wywołania.

       -t --test
              Sprawdza integralność wybranego pliku(ów), ale  nie
              dekompresuje  ich.  Wymusza to próbną dekompresję i
              mówi, jaki jest rezultat.

       -f --force
              Wymusza zastępowanie plików wyjściowych. Normalnie,
              bzip2    nie    zastępuje    istniejących    plików
              wyjściowych.  Wymusza  również  na  bzip2   łamanie
              dowiązań twardych, czego normalnie nie robi.

       -k --keep
              Zatrzymaj  (nie  kasuj)  pliki  wejściowe przy kom­
              presji lub dekompresji.

       -s --small
              Zredukuj użycie pamięci na kompresję, dekompresję i
              testowanie.  Pliki  są  dekompresowane  i testowane
              przy  użyciu   zmodyfikowanego   algorytmu,   który
              potrzebuje  tylko 2.5 bajtu na blok bajtów. Oznacza
              to, że każdy plik  może  być  zdekompresowany  przy
              użyciu  około  2300k  pamięci,  jednak tracąc około
              połowę normalnej szybkości.

              Podczas kompresji, -s wybiera bloki wielkości 200k,
              których  limity  pamięci  wynoszą mniej więcej tyle
              samo, w zamian  za  jakość  kompresji.  W  skrócie,
              jeśli  twój  komputer ma mało pamięci (8 megabajtów
              lub mniej), używaj opcji -s do wszystkiego.  Zobacz
              zarządzanie pamięcią poniżej.



                                                                3





bzip2(1)                    wersja 1.0                   bzip2(1)


       -q --quiet
              Wyłącza  wszystkie  nieistotne  komunikaty  ostrze­
              gawcze.  Nie są  eliminowane  komunikaty  dotyczące
              błędów  wejścia/wyjścia  i  innych  zdarzeń  kryty­
              cznych.

       -v --verbose
              Tryb gadatliwy -- pokazuje  stopień  kompresji  dla
              każdego   pliku.  Następne  -v  zwiększają  stopień
              gadatliwości, powodując wyświetlanie  dużej  ilości
              informacji, przydatnych głównie przy diagnostyce.

       -L --license -V --version
              Wyświetla wersję programu i warunki licencji.

       -1 to -9
              Ustawia  wielkość  bloku  na  100 k, 200 k .. 900 k
              przy  kompresji.  Nie  ma  żadnego  znaczenia  przy
              dekompresji. Zobacz zarządzanie pamięcią poniżej.

       --     Traktuje  wszystkie  następujące  po  nim argumenty
              jako nazwy plików, nawet jeśli zaczynają się one od
              myślnika.  Możesz  więc kompresować i dekompresować
              pliki, których nazwa zaczyna się  od  myślnika,  na
              przykład: bzip2 -- -mój_plik.

       --repetitive-fast --repetitive-best
              Te  parametry nie mają znaczenia w wersjach 0.9.5 i
              wyższych. Umożliwiały one pewną infantylną kontrolę
              nad    zachowaniem    algorytmu    sortującego   we
              wcześniejszych wersjach, co było czasami użyteczne.
              Wersje  0.9.5  i  wyższe mają usprawniony algorytm,
              który powoduje bezużyteczność tej funkcji.


ZARZĄDZANIE PAMIĘCIĄ
       bzip2 kompresuje duże pliki w blokach.  Rozmiar  bloku  ma
       wpływ  zarówno na stopień osiąganej kompresji, jak również
       na ilość pamięci potrzebnej do  kompresji  i  dekompresji.
       Parametry  od -1 do -9 wybierają rozmiar bloku odpowiednio
       od 100,000 bajtów aż do 900,000  bajtów  (standardowo).  W
       czasie  dekompresji,  rozmiar  bloku  użytego do kompresji
       jest odczytywany z nagłówku pliku skompresowanego  i  bun­
       zip2 sam zajmuje odpowiednią do dekompresji ilość pamięci.
       Ponieważ rozmiar bloków jest przetrzymywany w pliku  skom­
       presowanym,  parametry  od  -1  do -9 nie mają przy dekom­
       presji żadnego znaczenia.

       Wymagania kompresji i  dekompresji  w  bajtach,  mogą  być
       wyliczone przez:

              Kompresja :   400k + ( 8 x rozmiar bloku )

              Dekompresja :  100k + ( 4 x rozmiar bloku ) lub



                                                                4





bzip2(1)                    wersja 1.0                   bzip2(1)


                             100k + ( 2.5 x rozmiar bloku )

       Większe bloki dają duże zmniejszenie zwrotów marginalnych.
       Większość kompresji pochodzi z pierwszych stu  lub  dwustu
       kilobajtów  rozmiaru bloku.  Warto o tym pamiętać używając
       bzip2 na wolnych komputerach. Warto również podkreślić, że
       rozmiar  pamięci  potrzebnej do dekompresji jest wybierany
       poprzez ustawienie odpowiedniej wielkości bloku przy  kom­
       presji.

       Dla  plików skompresowanych standardowym blokiem wielkości
       900k, bunzip2 będzie  wymagał  około  3700  kilobajtów  do
       dekompresji.   Aby  umożliwić  dekompresję  na  komputerze
       wyposażonym jedynie w  4  megabajty  pamięci,  bunzip2  ma
       opcję,  która  może zmniejszyć wymagania prawie do połowy,
       tzn. około  2300  kilobajtów.  Prędkość  dekompresji  jest
       również  bardzo  zmiejszona,  więc  używaj tej opcji tylko
       wtedy, kiedy jest to konieczne. Tym parametrem jest -s.

       Generalnie, próbuj i używaj największych rozmiarów bloków,
       jeśli ilość pamięci ci na to pozwala. Prędkość kompresji i
       dekompresji w zasadzie nie  zależy  od  wielkości  użytego
       bloku.

       Inna  ważna  rzecz  dotyczy  plików,  które mieszczą się w
       pojedyńczym bloku -- oznacza to większość plików na  które
       się  natkniesz  używając  dużych  bloków.   Rozmiar realny
       pamięci zabieranej jest proporcjonalny do wielkości pliku,
       jeśli  plik jest mniejszy niż blok. Na przykład, kompresja
       pliku o wielkości 20,000 bajtów z parametrem -9 wymusi  na
       kompresorze odnalezienie 7600 k pamięci, ale zajęcie tylko
       400k + 20000 * 8 = 560 kilobajtów z tego. Podobnie, dekom­
       presor  odnajdzie 3700k, ale zajmie tylko 100k + 20000 * 4
       = 180 kilobajtów.

       Tu  jest  tabela,  która  podsumowuje  maksymalne   użycie
       pamięci dla różnych rozmiarów bloków. Podano też całkowity
       rozmiar skompresowanych 14 plików tekstowych (Calgary Text
       Compressione  Corpus)  zajmujących razem 3,141,622 bajtów.
       Ta kolumna daje pewne pojęcie o tym, jaki  wpływ  na  kom­
       presję  ma  wielkość  bloków. Ta tabela uzmysławia również
       przewagę użycia większych  bloków  dla  większych  plików,
       ponieważ "Corpus" jest zdominowany przez mniejsze pliki.
                    Użycie       Użycie        Użycie         Corpus
          Parametr kompresji   dekompresji   dekompresji -s    Size

            -1      1200k         500k          350k          914704
            -2      2000k         900k          600k          877703
            -3      2800k         1300k         850k          860338
            -4      3600k         1700k        1100k          846899
            -5      4400k         2100k        1350k          845160
            -6      5200k         2500k        1600k          838626
            -7      6100k         2900k        1850k          834096
            -8      6800k         3300k        2100k          828642



                                                                5





bzip2(1)                    wersja 1.0                   bzip2(1)


            -9      7600k         3700k        2350k          828642

ODZYSKIWANIE DANYCH ZE ZNISZCZONYCH PLIKÓW BZIP2
       bzip2  kompresuje  pliki  w blokach, zazwyczaj 900 kilbaj­
       towych. Każdy  blok  jest  trzymany  osobno.  Jeśli  błędy
       transmisji  lub  nośnika  uszkodzą plik wieloblokowy .bz2,
       możliwe jest odtworzenie  danych  zawartych  w  niezniszc­
       zonych blokach pliku.

       Każdy  blok  jest  reprezentowany przez 48-bitowy wzorzec,
       który  umożliwia  znajdowanie  przyporządkowań  bloków   z
       rozsądną  pewnością.  Każdy blok ma również swój 32-bitowy
       CRC, więc bloki uszkodzone mogą być łatwo odseparowane  od
       poprawnych.

       bzip2recover  jest  oddzielnym programem, którego zadaniem
       jest poszukiwanie bloków w plikach .bz2 i zapisywanie  ich
       do  własnego  pliku  .bz2.  Możesz potem użyć bzip2 -t aby
       sprawdzić spójność wyjściowego pliku i zdekompresować  te,
       które nie są uszkodzone.

       bzip2recover  pobiera  pojedynczy  argument, nazwę uszkod­
       zonego   pliku,   i    tworzy    pewną    liczbę    plików
       "rec0001plik.bz2", "rec0002plik.bz2", itd., przetrzymujące
       odzyskane bloki. Wyjściowe nazwy plików są  tak  tworzone,
       aby  łatwo  było potem używać ich razem za pomocą gwiazdek
       -- na przykład, "bzip2 -dc rec*plik.bz2 >  odzyskany_plik"
       -- wylistuje pliki we właściwej kolejności.

       bzip2recover  powinien  być  używany  najczęściej z dużymi
       plikami .bz2,  jako  iż  one  zawierają  najczęściej  dużo
       bloków.  Jest  czystym  bezsensem używać go na uszkodzonym
       jedno-blokowym pliku, ponieważ uszkodzony  blok  nie  może
       być  odzyskany.  Jeśli  chcesz zminimalizować jakiekolwiek
       możliwe  straty  danych  poprzez  nośnik  lub  transmisję,
       powinieneś zastanowić się nad użyciem mniejszych bloków.


OPISY WYNIKÓW
       Etap  sortujący kompresji łączy razem podobne ciągi znaków
       w pliku. Przez to, pliki zawierające bardzo  długie  ciągi
       powtarzających   się   symboli,   jak  "aabaabaabaab  ..."
       (powtórzone kilkaset razy) mogą być  kompresowane  wolniej
       niż  normalnie.  Wersje  0.9.5 i wyższe zachowują się dużo
       lepiej w tej sytuacji niż wersje poprzednie. Różnica stop­
       nia kompresji pomiędzy najgorszym i najlepszym przypadkiem
       kompresji wynosi około  10:1.  Dla  wcześniejszych  wersji
       było  to  nawet  około  100:1.  Jeśli  chcesz, możesz użyć
       parametru   -vvvv   aby   monitorować    postępy    bardzo
       szczegółowo.

       Prędkość dekompresji nie jest zmieniana przez to zjawisko.

       bzip2 zazwyczaj  rezerwuje  kilka  megabajtów  pamięci  do



                                                                6





bzip2(1)                    wersja 1.0                   bzip2(1)


       działania  a potem wykorzystuje ją w sposób zupełnie przy­
       padkowy.  Oznacza to, że zarówno prędkość kompresji jak  i
       dekompresji  jest  w  dużej części zależna od prędkości, z
       jaką   twój   komputer   może   naprawiać   braki   bufora
       podręcznego.  Z tego powodu, wprowadzone zostały małe zmi­
       any kody aby zmniejszyć straty, które dały  nieproporcjon­
       alnie  duży  wzrost  osiągnięć.   Myślę,  że  bzip2 będzie
       działał  najlepiej  na  komputerach  z   dużymi   buforami
       podręcznymi.


ZAKAMARKI
       Wiadomości   o  błędach  wejścia/wyjścia  nie  są  aż  tak
       pomocne, jak mogłyby być.  bzip2  stara  się  wykryć  błąd
       wejścia/wyjścia i wyjść "czysto", ale szczegóły tego, jaki
       to problem mogą być czasami bardzo mylące.

       Ta strona podręcznika odnosi się do  wersji  1.0  programu
       bzip2.   Skompresowane  pliki utworzone przez tę wersję są
       kompatybilne zarówno z w przód jak i wstecznie z  poprzed­
       nimi publicznymi wydaniami, wersjami 0.1pl2, 0.9.0 i 0.9.5
       ale z małymi wyjątkami: 0.9.0 i wyższe potrafią  poprawnie
       dekompresować  wiele  skompresowanych  plików złączonych w
       jeden.  0.1pl2 nie  potrafi  tego;  zatrzyma  się  już  po
       dekompresji pierwszego pliku w strumieniu.

       bzip2recover  używa  32-bitowych  liczb  do  reprezentacji
       pozycji  bitu  w  skompresowanym  pliku,  więc  nie   może
       przetwarzać   skompresowanych  plików  dłuższych  niż  512
       megabajtów. Można to łatwo naprawić.


AUTOR
       Julian Seward, jseward@acm.org.

       http://www.muraroa.demon.co.uk              http://source­
       ware.cygnus.com/bzip2

       Idee zawarte w bzip2 są podzielone (przynajmniej) pomiędzy
       nastepujący ludzi: Michael Burrows i David Wheeler (trans­
       formacja  sortującą  bloki),  David  Wheeler  (znów, koder
       Huffmana), Peter Fenwick  (struktura  kodowania  modelu  w
       oryginalnym  bzip2,  i wiele udoskonaleń), i Alistair Mof­
       far, Radford Neal i Ian Witten (arytmetyczny koder w  ory­
       ginalnym  bzip2). Jestem im bardzo wdzięczny za ich pomoc,
       wsparcie i porady. Zobacz stronę manuala w źródłowej  dys­
       trybucji  po  wskaźniki  do źródeł dokumentacji. Christian
       von Roques zachęcił mnie do wymyślenia szybszego algorytmu
       sortującego,  po  to  żeby  przyspieszyć  kompresję.  Bela
       Lubkin zachęciła mnie do polepszenia  najgorszych  wyników
       kompresji.  Wiele ludzi przysłało łatki, pomogło w różnych
       problemach, pożyczyło komputerów, dało rady i było ogólnie
       pomocnych.




                                                                7