1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373
|
.\"*******************************************************************
.\"
.\" 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.
|