.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\" This file is distributed under the same license as original manpage
.\" Copyright of the original manpage:
.\" Copyright © 1996-2010 Julian R Seward 
.\" Copyright © of Polish translation:
.\" Maciej Wojciechowski (PTM) <wojciech@staszic.waw.pl>, ????.
.\" Michał Górny <zrchos+manpagespl@gmail.com>, 2012.
.TH bzip2 1   
.SH NAZWA
bzip2, bunzip2 \- sortujący bloki kompresor/dekompresor plików, v1.0.6
.br
bzcat \- dekompresuje pliki na standardowe wyjście
.br
bzip2recover \- odzyskuje dane z uszkodzonych plików bzip2

.SH SKŁADNIA
.ll +8
\fBbzip2\fP [\fB\-cdfkqstvzVL123456789\fP] [\fInazwy_plików\fP\&...]
.br
\fBbzip2\fP [\fB \-h|\-\-help \fP]
.ll -8
.br
\fBbunzip2\fP [\fB \-fkvsVL \fP] [\fInazwy_plików\fP\&...]
.br
\fBbunzip2\fP [\fB \-h|\-\-help \fP]
.br
\fBbzcat\fP [\fB \-s \fP] [\fInazwy_plików\fP\&...]
.br
\fBbzcat\fP [\fB \-h|\-\-help \fP]
.br
\fBbzip2recover\fP \fInazwa_pliku\fP

.SH OPIS
\fBbzip2\fP kompresuje pliki przy użyciu 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 wiersza poleceń są w większości bardzo podobne do tych z \fBGNU gzip\fP,
ale nie są identyczne.

\fBbzip2\fP oczekuje listy plików towarzyszących parametrom wiersza
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 przetrzymywania daty, uprawnień, właściciela i
nazw plików na systemach, na których brakuje tych możliwości lub mają
ograniczenia co do długości nazwy, takich jak np. MS\-DOS.

\fBbzip2\fP i \fBbunzip2\fP standardowo nie nadpisują istniejących już plików. Aby
to robiły, trzeba użyć parametru \-f.

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

\fBbunzip2\fP (lub \fBbzip2 \-d\fP) dekompresuje wszystkie podane pliki. Pliki,
które nie były utworzone przez \fBbzip2\fP, zostaną wykryte i zignorowane, a na
ekranie pojawi się komunikat ostrzegawczy.  \fBbzip2\fP próbuje zgadnąć nazwę
dla dekompresowanego 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
       inna_nazwa	  staje się   inna_nazwa.out

Jeśli plik nie ma jednego z następujących rozpoznawalnych rozszerzeń:
\&\fI.bz2\fP, \fI.bz\fP, \fI.tbz2\fP lub \fI.tbz\fP, to \fBbzip2\fP napisze, że nie może
zgadnąć nazwy pierwotnego pliku, i użyje oryginalnej nazwy z dodanym
rozszerzeniem \fI.out\fP.

Tak jak w przypadku kompresji, niepodanie żadnych nazw plików powoduje
dekompresję ze standardowego wejścia na standardowe wyjście.

\fBbunzip2\fP poprawnie zdekompresuje plik, który jest połączeniem dwóch lub
więcej skompresowanych plików. Rezultatem jest połączenie odpowiednich
nieskompresowanych plików. Obsługiwane jest również sprawdzanie spójności
(\-t) połączonych skompresowanych plików.

Można 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ć zdekompresowany poprawnie tylko przez \fBbzip2\fP w wersji 0.9.0 lub
późniejszej. Wcześniejsze wersje \fBbzip2\fP zatrzymają się po zdekompresowaniu
pierwszego pliku w strumieniu.

\fBbzcat\fP (lub \fBbzip2 \-dc\fP) dekompresuje wszystkie wybrane pliki na
standardowe wyjście.

\fBbzip2\fP czyta argumenty ze zmiennych środowiskowych \fBBZIP2\fP i \fBBZIP\fP, 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 nieco
większy od pliku oryginalnego. Pliki mniejsze niż około sto bajtów stają się
większe, ponieważ mechanizm kompresji ma stały nagłówek wynoszący mniej
więcej 50 bajtów. Przypadkowe dane (włączając wyjście większości kompresorów
plików) są kodowane na mniej więcej 8,05 bitów na bajt, zwiększając plik o
około 0,5%.

Jako dodatkowe zabezpieczenie \fBbzip2\fP używa 32\-bitowych 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 \fBbzip2\fP (na szczęście bardzo rzadkich). Możliwość niewykrycia utraty
danych jest mikroskopijna, mniej więcej jedna szansa na cztery miliardy dla
każdego pliku. Trzeba jednak uważać, gdyż sprawdzenie jest dokonywane przed
dekompresją, więc program poinformuje tylko o tym, że coś jest nie w
porządku. Nie pomoże to odzyskać oryginalnych nieskompresowanych
danych. Można użyć \fBbzip2recover\fP, aby spróbować odzyskać dane z
uszkodzonych plików.

Zwracane wartości: 0 dla normalnego wyjścia, 1 dla problemów technicznych
(plik nieznaleziony, niewłaściwy parametr, błąd wejścia/wyjścia itp.), 2 dla
zasygnalizowania błędu skompresowanego pliku, 3 dla wewnętrznego błędu
(np. bug), który zmusił \fBbzip2\fP do przerwania.

.SH OPCJE
.TP 
\fB\-c \-\-stdout\fP
Kompresuje lub dekompresuje na standardowe wyjście.
.TP 
\fB\-d \-\-decompress\fP
Wymusza dekompresję.  \fBbzip2\fP, \fBbunzip2\fP i \fBbzcat\fP są tak naprawdę tymi
samymi programami i decyzja o tym, jakie akcje będą wykonane, jest
podejmowana na podstawie nazwy, jaka została użyta. Ten parametr ma wyższy
priorytet i wymusza na \fBbzip2\fP dekompresję.
.TP 
\fB\-z \-\-compress\fP
Podobne do \-d: wymusza kompresję, bez względu na sposób wywołania.
.TP 
\fB\-t \-\-test\fP
Sprawdza integralność wybranego pliku/plików, ale nie dekompresuje
ich. Wymusza to próbną dekompresję i mówi, jaki jest rezultat.
.TP 
\fB\-f \-\-force\fP
Wymusza zastępowanie plików wyjściowych. Normalnie \fBbzip2\fP nie zastępuje
istniejących plików wyjściowych. Flaga ta wymusza również na \fBbzip2\fP
łamanie dowiązań twardych, czego normalnie nie robi.

\fBbzip2\fP normalnie odmawia dekompresji plików, które nie mają poprawnych
magicznych bajtów nagłówka. Jeśli jednak nastąpi wymuszenie (opcja \-f),
przetworzy takie pliki niezmodyfikowane. Jest to zachowanie typowe dla GNU
gzip.
.TP 
\fB\-k \-\-keep\fP
Zatrzymuje (nie kasuje) pliki wejściowe przy kompresji lub dekompresji.
.TP 
\fB\-s \-\-small\fP
Redukuje 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 bajta na blok bajtów. Oznacza to, że każdy plik może
być zdekompresowany przy użyciu około 2300\ k pamięci, jednak przy szybkości
o około połowę mniejszej niż normalnie.

Podczas kompresji \-s wybiera bloki wielkości 200\ k, których limity pamięci
wynoszą mniej więcej tyle samo, w zamian za jakość kompresji. W skrócie,
jeśli komputer ma mało pamięci (8 megabajtów lub mniej), należy używać opcji
\-s do wszystkiego. Zobacz ZARZĄDZANIE PAMIĘCIĄ poniżej.
.TP 
\fB\-q \-\-quiet\fP
Wyłącza wszystkie nieistotne komunikaty ostrzegawcze.  Nie są eliminowane
komunikaty dotyczące błędów wejścia/wyjścia i innych zdarzeń krytycznych.
.TP 
\fB\-v \-\-verbose\fP
Tryb szczegółowy \-\- pokazuje stopień kompresji dla każdego pliku. Następne
\fB\-v\fP zwiększają stopień szczegółowości, powodując wyświetlanie dużej ilości
informacji, przydatnych głównie przy diagnostyce.
.TP 
\fB\-h, \-\-help\fP
Wyświetla krótki komunikat pomocy.
.TP 
\fB\-L \-\-license \-V \-\-version\fP
Wyświetla wersję programu i warunki licencji.
.TP 
\fB\-1\fP (lub \fB\-\-fast\fP) do \fB\-9\fP (lub \fB\-\-best\fP)
Ustawia wielkość bloku podczas kompresji na 100 k, 200 k... 900 k. Nie ma
żadnego znaczenia przy dekompresji. Zobacz ZARZĄDZANIE PAMIĘCIĄ
poniżej. Aliasy \fB\-\-fast\fP i \fB\-\-best\fP zostały dodane głównie dla zgodności z
GNU gzip. W szczególności \fB\-\-fast\fP niczego znacząco nie
przyspiesza. Natomiast \fB\-\-best\fP zaledwie powoduje wybór zachowania
domyślnego.
.TP 
\fB\-\-\fP
Traktuje wszystkie następujące po nim argumenty jako nazwy plików, nawet
jeśli zaczynają się one od łącznika. Możesz więc kompresować i dekompresować
pliki, których nazwa zaczyna się od łącznika, na przykład: bzip2 \-\-
\-mój_plik.
.TP 
\fB\-\-repetitive\-fast \-\-repetitive\-best\fP
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.

.SH "ZARZĄDZANIE PAMIĘCIĄ"
\fBbzip2\fP kompresuje duże pliki w blokach. Rozmiar bloku ma wpływ zarówno na
stopień osiąganej kompresji, jak i 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łówka pliku
skompresowanego, następnie \fBbunzip2\fP sam zajmuje odpowiednią do dekompresji
ilość pamięci. Ponieważ rozmiar bloków jest przetrzymywany w pliku
skompresowanym, parametry od \-1 do \-9 nie mają przy dekompresji żadnego
znaczenia.

Wymagania kompresji i dekompresji (w bajtach) można oszacować następująco:

       Kompresja:   400\ k + (8 * rozmiar bloku)

       Dekompresja:  100\ k + (4 * rozmiar bloku) lub
                      100\ k + (2,5 * 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 \fBbzip2\fP na wolnych komputerach. Warto
również podkreślić, że rozmiar pamięci potrzebnej do dekompresji jest
wybierany poprzez ustawienie odpowiedniej wielkości bloku przy kompresji.

Dla plików skompresowanych standardowym blokiem wielkości 900\ k \fBbunzip2\fP
będzie wymagał około 3700 kilobajtów do dekompresji. Aby umożliwić
dekompresję na komputerze wyposażonym jedynie w 4 megabajty pamięci,
\fBbunzip2\fP 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
zmniejszona, więc należy używać tej opcji tylko wtedy, kiedy jest to
konieczne. Tym parametrem jest \-s.

Generalnie należy próbować i używać największych rozmiarów bloków, jeśli
ilość pamię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 pojedynczym bloku \-
czyli większości plików, na które się można natknąć, używając dużych
bloków.  Rozmiar realny zabieranej pamięci jest proporcjonalny do wielkości
pliku, ponieważ 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 400\ k + 20000 * 8 = 560 kilobajtów z
tego. Podobnie, dekompresor odnajdzie 3700\ k, ale zajmie tylko 100\ k +
20000 * 4 = 180 kilobajtów.

Oto 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 Compression Corpus") zajmujących razem 3.141.622
bajtów. Ta kolumna daje pewne pojęcie o tym, jaki wpływ na kompresję ma
wielkość bloków. Wartości te zaniżają jednak korzyści wynikające z użycia
większych bloków dla większych plików, ponieważ "Corpus" jest zdominowany
przez mniejsze pliki.

             Użycie       Użycie        Użycie         Rozmiar
   Parametr kompresji   dekompresji   dekompresji \-s    "Corpusu"

     \-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
     \-9      7600k         3700k        2350k          828642

.SH "ODZYSKIWANIE DANYCH ZE ZNISZCZONYCH PLIKÓW BZIP2"
\fBbzip2\fP kompresuje pliki w blokach, zazwyczaj 900\-kilbajtowych. Każdy blok
jest przetwarzany niezależnie. Jeśli błędy transmisji lub nośnika uszkodzą
wieloblokowy plik .bz2, możliwe jest odtworzenie danych zawartych w
niezniszczonych blokach pliku.

Skompresowana reprezentacja każdego bloku jest oznaczona przez 48\-bitowy
wzorzec, który umożliwia znajdowanie granic 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 odróżnione od poprawnych.

\fBbzip2recover\fP jest oddzielnym programem, którego zadaniem jest
poszukiwanie bloków w plikach .bz2 i zapisywanie ich do własnego pliku
\&.bz2. Można potem użyć \fBbzip2 \-t\fP, aby sprawdzić spójność wyjściowych
plików i zdekompresować te, które nie są uszkodzone.

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

\fBbzip2recover\fP powinien być używany najczęściej z dużymi plikami .bz2, jako
iż właśnie one zawierają najczęściej dużo bloków. Jest czystym bezsensem
używać go na uszkodzonym jednoblokowym pliku, ponieważ uszkodzony blok nie
może być odzyskany. W celu zminimalizowania jakichkolwiek możliwych strat
danych poprzez nośnik lub transmisję należy zastanowić się nad użyciem
mniejszych bloków.

.SH "UWAGI DOTYCZĄCE WYDAJNOŚCI"
Etap sortujący kompresji gromadzi 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 stopnia kompresji pomiędzy
najgorszym a najlepszym przypadkiem kompresji wynosi około 10:1. Dla
wcześniejszych wersji było to nawet około 100:1. Aby monitorować postępy
bardzo szczegółowo, można użyć parametru \-vvvv.

Szybkość dekompresji nie jest zmieniana przez te zjawiska.

\fBbzip2\fP zazwyczaj rezerwuje kilka megabajtów pamięci do działania, a potem
wykorzystuje ją w dość przypadkowy sposób. Oznacza to, że szybkość zarówno
kompresji, jak i dekompresji jest w dużej części zależna od szybkości, z
jaką komputer użytkownika może obsłużyć chybienia bufora podręcznego. Z tego
powodu wprowadzone zostały małe zmiany kodu, aby zmniejszyć współczynnik
chybień, które dały nieproporcjonalnie duży wzrost osiągnięć.  \fBbzip2\fP
prawdopodobnie będzie działał najlepiej na komputerach z bardzo dużymi
buforami podręcznymi.

.SH ZASTRZEŻENIA
Wiadomości o błędach wejścia/wyjścia nie są aż tak pomocne, jak mogłyby
być.  \fBbzip2\fP 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.6 programu \fBbzip2\fP.
Skompresowane pliki utworzone przez tę wersję są kompatybilne zarówno w
przód, jak i wstecznie z poprzednimi publicznymi wydaniami, wersjami 0.1pl2,
0.9.0, 0.9.5, 1.0.0, 1.0.1, 1.0.2 i wyższymi, ale z jednym wyjątkiem: 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.

\fBbzip2recover\fP w wersjach niższych od 1.0.2 używał 32\-bitowych liczb do
reprezentacji pozycji bitu w skompresowanym pliku, więc nie mógł przetwarzać
skompresowanych plików dłuższych niż 512 megabajtów. Wersja 1.0.2 i wyższe
używają 64\-bitowych liczb na niektórych obsługujących je platformach (zgodne
z GNU oraz Windows). Aby sprawdzić, czy bzip2recover został zbudowany z
takim ograniczeniem, należy uruchomić go bez żadnych argumentów. Zawsze
istnieje możliwość zbudowania własnej wersji nieposiadającej tego
ograniczenia \- należy w tym celu skompilować program ze zmienną MaybeUInt64
zdefiniowaną jako 64\-bitowa liczba całkowita.



.SH AUTOR
Julian Seward, jseward@acm.org.

http://www.bzip.org

Idee zawarte w \fBbzip2\fP są zasługą (przynajmniej) następujących osób:
Michael Burrows i David Wheeler (transformacja sortująca bloki), David
Wheeler (znów, koder Huffmana), Peter Fenwick (struktura kodowania modelu w
oryginalnym \fBbzip2\fP i wiele udoskonaleń) oraz Alistair Moffar, Radford Neal
i Ian Witten (arytmetyczny koder w oryginalnym \fBbzip2\fP). Jestem im bardzo
wdzięczny za ich pomoc, wsparcie i porady. Na stronie podręcznika w
dystrybucji źródłowej znajdują się odsyłacze do źródeł
dokumentacji. Christian von Roques zachęcił mnie do wymyślenia szybszego
algorytmu sortującego po to, by przyspieszyć kompresję. Bela Lubkin
zachęciła mnie do polepszenia wyników kompresji w najgorszych
przypadkach. Donna Robinson przekonwertowała dokumentację do formatu
XML. Skrypty bz* są oparte o skrypty z GNU gzip.  Wiele osób przysłało
łatki, pomogło w różnych problemach, pożyczyło komputery, udzieliło porad i
było ogólnie pomocnych.
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są:
Maciej Wojciechowski (PTM) <wojciech@staszic.waw.pl>
i
Michał Górny <zrchos+manpagespl@gmail.com>.
.PP
Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją \fB 1.0.6 \fPoryginału.
