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 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442
|
.PU
.TH bzip2 1
.SH NV
bzip2, bunzip2 \- 'block-sorting' eljrssal dolgoz tmrtprogram, v0.9.0
.br
bzcat \- stdout-ra csomagolja ki az llomnyt
.br
bzip2recover \- srlt bzip2 adatait prblja megmenteni
.SH TTEKINTS
.ll +8
.B bzip2
.RB [ " \-cdfkstvzVL123456789 " ]
[
.I "fjlnevek \&..."
]
.ll -8
.br
.B bunzip2
.RB [ " \-fkvsVL " ]
[
.I "fjlnevek \&..."
]
.br
.B bzcat
.RB [ " \-s " ]
[
.I "fjlnevek \&..."
]
.br
.B bzip2recover
.I "fjlnv"
.SH LERS
A
.I bzip2
Burrows-Wheeler-fle blokkrendez algoritmussal s Huffman-kdolssal
tmrt szveges llomnyokat.
A tmrts mrtke ltalban lnyegesen jobb, mint ami a
legtbb hagyomnyos LZ77/LZ78 alap tmrtvel elrhet,
s megkzelti a statisztikus mdszerrel dolgoz PPM csald
teljestmnyt.
A parancssori opcik szndkosan igen hasonlak a
.I GNU Gzip
opciihoz, de nem azonosak azokkal.
A
.I bzip2
llomnynevek listjt vrja a hozzjuk tartoz parancssori
kapcsolkkal. Minden fjlt azok "eredeti_nv.bz2" nev
tmrtett vltozatra cserl ki.
A tmrtett fjlokhoz tartoz dtumok s jogok az eredetivel
megegyeznek, gy ezek a tulajdonsgok kicsomagolskor helyesen
llthatk vissza.
A fjlnevek kezelse egyszer abban az rtelemben, hogy nincs
lehetsg az eredeti fjlnevek, jogok s dtumok megrzsre
az ezeket nem tmogat, vagy a MS-DOS-hoz hasonlan szigoran
kttt hosszsg neveket kezel fjlrendszerekben.
A
.I bzip2
s a
.I bunzip2
alaprtelmezs szerint nem rnak fell mr ltez fjlokat;
erre a \-f kapcsol hasznlatval lehet rvenni ket.
Fjlnevek hinyban a
.I bzip2
a szabvnyos bemenetrl a szabvnyos kimenetre dolgozik.
Ebben az esetben azonban a
.I bzip2
nem fogja a tmrtett adatokat a terminlra rni, mert az
feldolgozhatatlan, gy rtelmetlen volna.
A
.I bunzip2
(vagy a
.I bzip2 \-d
) kicsomagolja s visszalltja a felsorolt fjlok kzl
a ".bz2"-re vgzd nevket.
A nem erre vgzd nev fjlokat nem veszi figyelembe.
Ismtelten: ha nem adunk meg fjlnevet, a tmrts standard
inputrl szabvnyos kimenetre trtnik.
A
.I bunzip2
helyesen fogja kicsomagolni azokat a fjlokat, melyek kt
vagy tbb tmrtett fjl sszevonsval (sszemsolsval)
keletkeznek. Az eredmny a kicsomagolt fjlok egybemsolt
lncolata lesz. A fjlok srtetlensgnek ellenrzse (\-t)
az sszelncolt archvumokon is mkdik.
A szabvnyos kimenetre is lehet be- illetve kicsomagolni fjlokat
a \-c kapcsol megadsval. Egyszerre tbb fjllal is lehet gy
dolgozni. A keletkez kimenetek sorban a szabvnyos kimenetre
kerlnek. Tbb fjl ily mdon trtn tmrtse egy olyan
adatfolyamot eredmnyez, melyben az egyes fjlok tmrtve
szerepelnek. Egy ilyen llomny helyesen csak a
.I bzip2
0.9.0-s vagy jabb verzijval csomagolhat ki. A
.I bzip2
rgebbi verzii az els fjl kibontsa utn megllnak.
A
.I bzcat
(vagy a
.I bzip2 \-dc
) a megadott fjlokat a szabvnyos kimenetre csomagolja ki.
A tmrts mindig megtrtnik, mg akkor is, ha a tmrtett
fjl esetleg valamivel nagyobb, mint az eredeti. A kb. 100 bjtnl
kisebb fjlok hajlamosak erre, mivel a tmrt mechanizmus maga
is hozzad gy 50 bjtot az archvumhoz.
Az olyan adathalmazra, melyben az egyes elemek elfordulsa vletlenszer
(ilyen a legtbb tmrtprogram kimenete), a kdols kb. 8.05 bit/bjt
arnnyal trtnik, ami megkzeltleg 0.5%-os mretnvekedst eredmnyez.
nellenrzsknt az adatok vdelmre a
.I bzip2
32 bites CRC-ket (ellenrz sszegeket) hasznl, gy biztostva,
hogy a kitmrtett llomny az eredetivel megegyezzen.
Ez egyrszt a tmrtett adatok srlse ellen, msrszt pedig a
.I bzip2
eddig fel nem dertett (s remlhetleg igen valszntlen) hibi
ellen vd.
Annak az eslye, hogy a tmrtett adatban elfordul hiba
szrevtlen marad, igen kicsi, megkzeltleg egy a ngybillihoz
minden egyes tmrtett fjl esetben. Lnyeges azonban, hogy az
ellenrzs kicsomagolskor trtnik, s csak arra hvja fel a
figyelmet, hogy valami nincs rendben, az eredeti adatot
visszalltani nem tudja.
A
.I bzip2recover
-rel lehet megprblni az adatok visszalltst a srlt fjlbl.
Visszatrsi rtkek:
0 ha a program futsa rendesen befejezdtt
1 ha krnyezeti problmba futott (nem tallja a fjlt, rossz kapcsolt
kapott, I/O hiba esetn, stb.)
2 ha a tmrtett fjl hibs
3 ha bels hiba (pl. bug) miatt a
.I bzip2
azonnal felfggesztette futst.
.SH MEMRIAKEZELS
A
.I Bzip2
a nagy fjlokat blokkokban kezeli. A blokkmret meghatrozza mind az
elrhet tmrtsi arnyt, mind pedig a be- s kicsomagolshoz szksges
memria mennyisgt. A \-1 ... \-9 kapcsolk az egyes blokkmreteket
100,000 ... 900,000 bjt rtkekre lltjk. Kibontskor a program az
arhvum fejlcbl olvassa ki a tmrtskor hasznlt blokkmretet, s a
.I bunzip2
ennek megfelelen ppen annyi memrit foglal le magnak, amennyi a
kibontshoz szksges. Mivel a blokkmret a tmrtett fjlban van,
a \-1 ... \-9 kapcsolknak nincs jelentsgk s azokat a program
kibontskor figyelmen kvl hagyja.
A be- s kicsomagols memriaignye bjtban megkzeltleg a
Tmrts: 400k + ( 7 x blokkmret)
Kibonts: 100k + ( 4 x blokkmret), vagy
.br
100k + ( 2.5 x blokkmret)
kpletekkel becslhet meg,
Nagyobb blokkmret gyorsan cskken mellkes nyeresget ad;
a tmrts jelents rszt a blokkmret els 2-300k-ja adja.
Ezt rdemes fejben tartani a
.I bzip2
kis gpeken trtn hasznlatakor.
Arrl sem szabad megfeledkezni, hogy a kibonts memriaignyt a
tmrtskor vlasztott blokkmret hatrozza meg.
Az alaprtelmezett 900k mret blokkokkal tmrtett fjlok esetben a
.I bunzip2
a kibontshoz kb. 3700k memrit fog hasznlni.
Hogy minden fjl kibonthat legyen mg egy 4 megabjtos gpen is, a
.I bunzip2
lehetv teszi a kibontst kb. feleennyi, megkzeltleg 2300k memria
felhasznlsval is. Ezzel a kibonts sebessge is felezdik, gy csak
akkor rdemes hasznlni ezt a lehetsget, amikor valban szksges.
Az idevonatkoz kapcsol a \-s.
ltalban, ha a rendelkezsre ll memria mennyisge engedi, rdemes
megprblkozni a legnagyobb blokkmret hasznlatval, mivel gy rhet el
a legjobb tmrtsi arny. A tmrts s kibonts sebessgt a blokkmret
gyakorlatilag nem befolysolja.
Msik lnyeges pont azoknak a fjloknak az esete, melyek egyetlen blokkba
belefrnek - nagy blokkmret hasznlatakor ez a legtbb fjlra fennll.
A tnylegesen felhasznlt memria mennyisge a fjl mretvel arnyos,
mivel a fjl kisebb, mint egy blokk. Egy 20,000 bjt hossz fjl \-9
kapcsolval trtn tmrtsekor pldul kb. 6700k memrit foglal le
a tmrtprogram, de csak 400k + 20000 * 7 = 540k-t hasznl belle.
Kibontskor ehhez hasonlan 3700k-t foglal le, de csak
100k + 20000 * 4 = 180k-t hasznl.
A kvetkez tblzat a klnbz blokkmretekhez tartoz maximlis
memriafelhasznlst, valamint a Calgary Szvegtmrts Dokumentci
sszesen 3,141,622 bjtos 14 fjljnak tmrtett mrett tartalmazza.
Ez az oszlop nmi ttekintst ad arrl, hogyan vltozik a tmrts
mrtke a blokkmret fggvnyben. Ezek a szmok nem igazn mutatjk
a nagy blokkmret elnyeit nagyobb fjlokra, mivel a Dokumentciban
a kismret fjlok tlslyban vannak.
Tmrts Kibonts Kibonts Dokumentci
Kapcsol mem.haszn. mem.haszn. -s -sel mrete
-1 1100k 500k 350k 914704
-2 1800k 900k 600k 877703
-3 2500k 1300k 850k 860338
-4 3200k 1700k 1100k 846899
-5 3900k 2100k 1350k 845160
-6 4600k 2500k 1600k 838626
-7 5400k 2900k 1850k 834096
-8 6000k 3300k 2100k 828642
-9 6700k 3700k 2350k 828642
.SH OPCIK
.TP
.B \-c --stdout
Tmrts vagy kibonts a szabvnyos kimenetre. A \-c -vel tbb fjl
bonthat ki egyszerre, de csak egyetlen fjl tmrthet a stdout-ra.
.TP
.B \-d --decompress
Kibonts. A
.I bzip2,
.I bunzip2
s a
.I bzcat
tulajdonkppen ugyanaz a program, ami annak alapjn dnti el, hogy mit
kell tennie, hogy melyik nevt hasznljuk. Ez a kapcsol fellbrlja
ezt a dntst, s a
.I bzip2
kibontknt fog mkdni.
.TP
.B \-z --compress
A \-d ellentte: a tmrtst erlteti, fggetlenl attl, hogy a programot
melyik nevvel indtottuk.
.TP
.B \-t --test
A megadott fjlok srtetlensgt ellenrzi, de nem bontja ki ket.
Valjban egy "prbakibontst" vgez, s az eredmnyt eldobja.
.TP
.B \-f --force
Fellrja a kimeneti llomnyokat. Rendes esetben a
.I bzip2
nem r fell mr ltez kimeneti fjlokat.
.TP
.B \-k --keep
Megtartja (nem trli le) a bemen llomnyokat be- s kitmrtskor.
.TP
.B \-s --small
Cskkenti a memriahasznlatot, tmrtskor, kibontskor,
s tesztelskor.
A fjlok kibontsa s tesztelse egy mdostott algoritmussal trtnik,
amelynek csupn 2.5 bjtra van szksge bjtonknt a blokkban.
Ez azt jelenti, hogy brmelyik fjl kibonthat 2300k memriban,
igaz, a norml sebessgnek csaknem felvel.
Tmrtskor a -s 200k blokkmretet llt be, ami a memriahasznlatot
megkzeltleg ugyanezekre az rtkekre korltozza, a tmrts mrtknek
rovsra. Rviden: kevs memrival (8 megabjt vagy kevesebb) rendelkez
gp esetben mindig hasznljuk a -s kapcsolt.
(ld. mg: MEMRIAKEZELS)
.TP
.B \-v --verbose
Bbeszd md -- megmutatja a tmrts mrtkt minden feldolgozott
fjl esetben. Tovbbi \-v-k a "bbeszdsg" mrtkt nvelik, rengeteg
olyan informcit adva, melyek fknt diagnosztikai clbl lehetnek
rdekesek.
.TP
.B \-L --license -V --version
A program verziszmt, felhasznli engedlyeket s feltteleket jelenti
meg.
.TP
.B \-1 to \-9
Tmrtskor a blokkmretet lltja 100k, 200k ... 900k-ra.
Kibontskor semmilyen hatsa nincs.
Lsd mg: MEMRIAKEZELS
.TP
.B \--repetitive-fast
.I bzip2
Nmi l-vletlenszer varicit visz az ersen ismtld jelleg
blokkokba, hogy tmrtskor cskkentse a "legrosszabb eset"
esetn elll teljestmnyromls valsznsgt.
Ha a rendezs nehzsgekbe tkzik, a program a blokkot
sszekeveri, s a rendezst jraindtja.
Durvn, a
.I bzip2
hromszor annyi ideig tart ki az jrarendezs eltt az sszekeversig,
mint ameddig egy "j" bemenet feldolgozsa tartana.
Ezzel a kapcsolval sokkal hamarabb feladja.
.TP
.B \--repetitive-best
A \--repetitive-fast ellentte; sokkal kemnyebben prblkozik
az sszekeversig a rendezs eltt.
.SH ADATMENTS SRLT FJLOKBL
A
.I bzip2
a fjlokat rendszerint 900 kilobjtos blokkokban tmrti.
Minden blokkot kln kezel. Ha az adathordoz vagy az tvitel
hibja miatt egy tbb blokkbl ll .bz2 fjl megsrl, elkpzelhet
az adatok megmentse az llomny srtetlen blokkjaibl.
Minden blokk tmrtett megfeleljt egy-egy 48 bites minta hatrolja,
ami elg j biztonsggal teszi lehetv a blokkhatrok megllaptst.
Minden blokk tartalmazza a sajt 32 bites CRC-jt, gy a srlt s
a srtetlen blokkok egymstl megklnbztethetk.
A
.I bzip2recover
egy egyszer program, aminek clja az egyes blokkok megtallsa a .bz2
archvumban, s klnll .bz2 fjlokknt val kirsa. Ezek kztt a
.I bzip2 -t
segtsgvel megkereshetk s kibonthatk a srtetlen blokkok.
A
.I bzip2recover
egyetlen, egyszer argumentumot fogad el, ez pedig a srlt llomny
neve, s a klnll blokkokat tartalmaz fjlokat hoz ltre
"rec0001file.bz2", "rec0002file.bz2", stb. nven. A keletkez fjlok
nevei olyanok, hogy az egymst kvet feldolgozsoknl a
joker karakterek hasznlatakor, pldul a
"bzip2 -dc rec*file.bz2 > javtott_adat"
esetn a fjlok a helyes sorrendben jelennek meg.
A
.I bzip2recover
nagy .bz2 fjlok esetn lehet hasznos, mivel ezek tbb
blokkot tartalmaznak. Teljesen hibaval a hasznlata
az egy blokkot tartalmaz srlt fjloknl, mivel
srlt blokk nem llthat helyre. Az adathordoz vagy az tvitel
hibibl add adatveszts lehetsgnek a lehet legkisebbre
cskkentshez megfontoland esetleg a kisebb blokkmret
hasznlata.
.SH A TELJESTMNYRL
A tmrts rendezs fzisban a fjl hasonl rszeinek sszegyjtse
trtnik. Emiatt az ismtld szimblumok igen hossz lncolatt
(mint pl. a tbb szzszor ismtld "aabaabaabaab ...") tartalmaz
fjl tmrtse szlssgesen lass lehet.
Ilyenkor a
\-vvvvv
opcival esetleg rszletesen nyomon kvethet a folyamat.
A kibonts sebessgt ez nem befolysolja.
Az ilyen beteges esetek a gyakorlatban ritknak tnnek, fleg
tesztclokra mestersgesen sszelltott fjlokban, s alacsony
szint disk image-ekben (egy hajlkony- vagy merevlemez tartalma
fjlba rva) fordulnak el. Ez utbbiak
.I bzip2
-vel trtn tmrtse nem javasolt.
Ha egy fjl tmrtsekor jelents lassuls tapasztalhat,
rdemes megprblni a legkisebb blokkmret belltst a \-1
kapcsolval.
A
.I bzip2
rendszerint pr megabjt memrit foglal le magnak, amiben dolgozhat,
aztn az egszet elgg ssze-vissza mdon tltgeti fel.
Ez azt jelenti, hogy mind a tmrts, mind pedig a kibonts esetn
a teljestmnyt nagyban az hatrozza meg, hogy a rendszer
milyen gyorsan tudja kiszolglni a cache-ben nem tallhat adatokra
irnyul krseket. Emiatt a programkd ilyen esetek arnynak
cskkentst clz kis vltoztatsra arnytalanul nagy
teljestmnynvekeds figyelhet meg.
A
.I bzip2
gy valsznleg a nagyon nagy cache-sel rendelkez gpeken teljest a
legjobban.
.SH FIGYELMEZTETS
Az I/O hibajelzsek nem olyan hasznosak, amilyenek lehetnnek.
A
.I bzip2
kemnyen prblkozik, hogy az I/O hibkat szrevegye, s tisztn
lpjen ki, de annak a rszletei, hogy tulajdonkppen mi is volt a
problma, gyakran flrevezetnek tnnek.
Ez a kziknyvoldal a
.I bzip2
0.9.0-s verzira vonatkozik.
Az ezen verzival ksztett tmrtett adat teljes mrtkben
kompatbilis az ezt megelz, szabadon terjeszthet 0.1pl2 verzival
ksztettel, egyetlen kivtellel: 0.9.0 helyesen bontja ki a tbb
archvumot tartalmaz sszevont fjlokat. A 0.1pl2 ezt nem tudja
megtenni: az els fjl kibontsa utn megll.
Windows 95 s NT alatt a joker karakterek hasznlata nem tkletes.
A
.I bzip2recover
32 bites egszeket hasznl a tmrtett fjlokban a bitpozcik
brzolsra, gy nem kpes kezelni az 512 megabjtnl nagyobb
archvumokat. Ez a problma egyszeren javthat.
.SH SZERZ
Julian Seward, jseward@acm.org.
http://www.muraroa.demon.co.uk
A
.I bzip2
-ben megtesteslt tletek a kvetkezknek tulajdonthatk:
Michael Burrows s David Wheeler (blokkrendez transzformci)
David Wheeler (Huffman kdol)
Peter Fenwick (strukturlt programozsi modell az eredeti
.I bzip
-ben s tbb finomts)
s
Alistair Moffat, Radford Neal valamint Ian Witten (az eredeti
.I bzip
aritmetikai kdolja).
Ksznet illeti ket segtsgkrt, tmogatsukrt s tancsaikrt.
A program forrskdjhoz mellkelt dokumentciban tallhatk mg
hivatkozsok tovbbi dokumentciforrsokra.
Christian von Roques sztklt gyorsabb rendez algoritmus keressre,
s a tmrts gyorstsra.
Bela Lubkin biztatott a tmrt "legrosszabb eset"-i teljestmnynek
nvelsre.
Tbb ember kldtt hibajavtsokat, segtett hordozhatsgi problmk
megoldsban, adott klcsn gpeket, adott tancsot s volt
ltalban segtsgemre.
|