Provided by:
manpages-tr_1.0.2+cvs20040401-1_all 
İSİM
bzip2 - blok sıralamalı dosya sıkıştırıcı v1.0.2
bunzip2 - sıkıştırılmış dosyaları açar
bzcat - dosyaları standart çıktıda açar
bzip2recover - zarar görmüş bzip2 dosyalarındaki verileri kurtarır
KULLANIM
bzip2 [ -cdfkqstvzVL123456789 ] [ dosyalar ... ]
bunzip2 [ -fkvsVL ] [ dosyalar ... ]
bzcat [ -s ] [ dosyalar ... ]
bzip2recover dosyaismi
AÇIKLAMA
bzip2, Burrows-Wheeler blok sıralamalı metin sıkıştırma algoritmasını
ve Huffman kodlamasını kullanarak dosyaları sıkıştırır. Sıkıştırma
oranı geleneksel LZ77/LZ78 tabanlı sıkıştırma araçlarından çok daha
iyidir. PPM ailesi istatistiksel sıkıştırıcıların performansına oldukça
yakındır.
Komut satırı seçenekleri kasıtlı olarak GNU gzip'e oldukça benzer
şekilde yapılmıştır, fakat birebir aynı değillerdir.
bzip2, komut satırı seçeneklerine eşlik edecek dosya isimlerinin
listesini ister. Her bir dosya sıkıştırılmış sürümü ile değiştirilir
ve ismi "orjinal_dosya.bz2" şekline dönüştürülür. Her bir
sıkıştırılmış dosya, orjinal dosya ile aynı izinlere, aynı düzenlenme
tarihlerine ve mümkün ise aynı iyeliklere sahiptir. Bu sayede
sıkıştırılmış dosya açıldığı zaman orjinal dosya elde edilmiş olur.
Dosya isimlerini yönetmek işi, orjinal dosya ismini koruyamayacak,
izinler ve iyelikleri veya tarihleri kendi dosya sistemi içinde
bulunduramayacak dosya sistemlerinin (mesela MS-DOS) olduğu düşüncesi
ile yürütülmektedir. Muhtemel dosya ismi uzunluğu kısıtlamalarını da
unutmamak gerekir.
bzip2 ve bunzip2 öntanımlı olarak, varolan dosyanın üzerine yazmazlar.
Şayet bunu yapmak isterseniz -f seçeneğini kullanmanız gerekir.
Şayet dosya ismi belirtilmezse, bzip2 standart girdiden standart
çıktıya sıkıştırma işlemi yapar. Bu durumda, bzip2 sıkıştırılmış
çıktıyı bir terminale yazmayı reddedecektir, bu nedenle böyle bir şey
yapmak tamamen anlamsız ve amaçsız olacaktır.
bunzip2 (veya bzip2 -d) belirtilen bütün dosyaları açar. bzip2
tarafından sıkıştırılmamış dosyalar tespit edilir ve yok sayılır,
ardından bir uyarı mesajı verilir. bzip2, sıkıştırılmış dosyadan
açılacak dosyaya aktarılacak dosya ismini şu şekilde tespit etmeye
çalışır:
dosyaismi.bz2 => dosyaismi
dosyaismi.bz => dosyaismi
dosyaismi.tbz2 => dosyaismi.tar
dosyaismi.tbz => dosyaismi.tar
başkabirisim => başkabirisim.out
Şayet dosya yukarıda belirtilen soneklerden birisine sahip değilse,
bzip2 mızmızlanır ve orijinal dosya ismini sonuna .out ekleyerek
kullanır.
Sıkıştırma işleminde olduğu gibi, dosya ismi belirtmeden yapılan açma
işleminde standart girdiden standart çıktıya açma işlemi yapılır.
bunzip2, iki ya da daha fazla sıkıştırılmış dosyadan oluşan birleşik
bir dosyayı doğru bir şekilde açacaktır. Sonuçta açılmış dosyalar
birleşik olarak elde edilir. Birleşik sıkıştırılmış dosyaların bütünlük
sınaması yapılması (-t) özelliği de desteklenmektedir.
Ayrıca -c seçeneğini belirterek standart çıktıda dosyaları
sıkıştırabilir veya açabilirsiniz. Çoklu dosyalar bu şekilde
sıkıştırılabilir veya açılabilir. Sonuç çıktıları standart çıktıya
peşpeşe gönderilir. Bu şekilde çoklu dosya sıkıştırma çoklu
sıkıştırılmış dosya temsilcilerinin bulunduğu bir akım üretir. Bu tür
bir akım sadece bzip 0.9.0 veya daha sonraki bir sürümle düzgün bir
şekilde açılabilir. Daha eski sürümler ilk dosyayı açtıktan sonra
dururlar.
bzcat (veya bzip2 -dc) belirtilen bütün dosyaları standart çıktıya
açar.
bzip2, argümanları sırayla BZIP2 ve BZIP ortam değişkenlerinden okurlar
ve bu argümanları komut satırı argümanlarını okumadan önce uygularlar.
Bu, öntanımlı argümanların uygulanması için elverişli bir yol sağlar.
Sıkıştırma işlemi, sıkıştırılmış dosya orijinalinden biraz büyük olsa
bile, mutlaka yapılır. Yüz bayttan daha küçük dosyalar şişmanlamaya
meyillidir. Çünkü sıkıştırma algoritması ilk 50 bayta yazılacak bir
sabite sahiptir. Rasgele veri (pek çok dosya sıkıştırıcısının çıktısı
dahil) bayt başına 8.05 bitlik bir oran ile kodlanır. Bu da %0.5lik bir
genişlemeye sebep verir.
Bir özdenetim mekanizması olarak, bzip2 32 bitlik CRC kullanır ve
açılan dosya ile orijinal sıkıştırılmış dosyanın aynı olup olmadığını
kontrol eder. Bu tedbir sıkıştırılmış dosyada meydana gelebilecek
bozulmalar ve bzip2'de olması muhtemel yazılım hatalarına karşı
güvenlik sağlar. Elden geçirilen her bir dosya için tespit edilemeyecek
hata oranı 4 milyarda bir değişiklik oranının altındadır. Bu orandan
daha küçük değişiklikler mikroskobiktir ve tespit edilemeyebilir.
Bununla birlikte uyanık olmakta fayda vardır, kontrol açma işlemi
esnasında yapılır ve sadece bir takım şeylerin yanlış olduğunu söyler.
Orijinal açılmış verileri kurtarmanıza yardımcı olmaz. Bu durumda,
verileri kurtarmak için bzip2recover kullanmalısınız.
Geri dönen değerler:
Normal çıktı için 0, çevresel sorunlar için 1 (dosya bulunamaması,
geçersiz seçenekler, G/Ç hataları, vs..), sıkıştırılmış dosyada
bozukluk için 2, bzip2'nin paniklemesine sebep olan dahili bir
tutarlılık hatası için 3 (böcük durumu).
SEÇENEKLER
-a, --ascii
Ascii metin kipi: satır sonlarını yerel ayarlara göre
dönüştürür. Bu seçenek, sadece Unix dışı birkaç sistemde
desteklenir. Örneğin MSDOS´da sıkıştırma esnasında CRLF'ler
LF´ye çevrilir ve açma işleminde LF´ler CRLF´ye dönüştürülür.
-c, --stdout
Standart çıktıda sıkıştırılır veya açar.
-d, --decompress
Mutlaka açma işlemi yapılır. bzip2, bunzip2 ve bzcat aslında
aynı yazılımdır ve yapılması gereken işlem, kullanılan yazılım
ismine göre kararlaştırılır. Bu seçenek, bu yöntemi yoksayar ve
bzip2'yi açma işlemine zorlar.
-z, --compress
-d nin zıddı: hangi isim ile çağrılırsa çağrılsın mutlaka
sıkıştırma yapılır (örneğin, bunzip2 komutuna bu seçeneği
vererek sıkıştırma yapmasını sağlayabilirsiniz).
-t, --test
Belirtilen dosya veya dosyaların bütünlüğünü kontrol eder,
gerçekte açma işlemi yapmaz. Bu seçenek ile bir deneme açılımı
yapılmış olur ve sonuçlar belirtilir.
-f, --force
Çıktı dosyasının üzerine yazmaya zorlar. Normal olarak, bzip2
varolan bir dosyanın üzerine yazmayacaktır. Ayrıca bu seçenek
bzip2'yi dosyalara olan sabit bağları kırmaya zorlar, böylece bu
bağlarda üzerine yazma yapılmaz.
bzip2 normalde doğru sihirli başlık baytlarına sahip olmayan
dosyaları açmayı rededecektir. Şayet -f kullanılır ise, bu
dosyaları değiştirilmeden geçecektir. GNU gzip de bu şekilde
davranır.
-k, --keep
Sıkıştırma veya açma işlemi esnasında orjinal dosyaları silmez,
saklar.
-s, --small
Sıkıştırma, açma ve sınama işlemleri için bellek ihtiyacını
azaltır. Dosyalar bayt bloğu başına 2.5 bayt gerektiren
değişiklik yapılmış bir algoritma ile açılır ve sınanır. Bunun
anlamı, herhangi bir dosyanın 2300k lık bir bellek alanı içinde
açılabileceğidir ancak başarım, normal hızın yarısına kadar
düşer.
Sıkıştırma esnasında, -s seçeneği ile 200k lık blok boyutu
seçilir, bu belleği de aynı şekilde sınırlar ve sıkıştırma
oranını artırır. Uzun lafın kısası, makinenizin belleği 8MB'dan
daha az ise -s seçeneğini her şeyde kullanın. Aşağıdaki
bölümüne bakınız.
-q, --quiet
Gerekli olmayan uyarılar verilmez. G/Ç ve diğer önemli hata
iletileri gizlenmez.
-v, --verbose
Ayrıntı kipi: işlenen her bir dosya için sıkıştırma oranlarını
gösterir. Daha fazla -v ayrıntı oranını artıracaktır. Teşhis
amaçlı kullanıma uygun olarak pek çok bilgi yazılım tarafından
bildirilecektir.
-L, --license, -V, --version
Yazılımın sürüm, lisans, koşul ve kurallarını görüntüler.
-1 (veya --fast) den -9 (veya --best) a kadar
Sıkıştırma yaparken blok boyutlarını 100k, 200k, .., 900k
şeklinde ayarlar. Çözme işleminde bir etkisi yoktur. Aşağıdaki
bölümüne bakınız. --fast ve --best seçenek isimleri GNU gzip
uyumluluğunu sağlamak içindir. Açıkçası, --fast gözle görülür
bir hız artışı sağlamaz ve --best sadece öntanımlı değerlerin
seçilmesini sağlar.
-- Ardından belirtilen bütün argümanları dosya isimleri olarak
kabul eder. Bu argümanların tek çizgi ile başlamış olmaları bile
önemli değildir. Böylece tek çizgi ile başlayan dosya isimlerini
kullanabilirsiniz. Örneğin: bzip2 -- -benim_dosyam.
--repetitive-fast, --repetitive-best
Bu seçenekler sürüm 0.9.5 ve üzerinde gereksizdir. Daha eski
sürümlerde, bazı kaba kontrollerin yapılmasını sağlamaya yönelik
seçeneklerdir. Bazen faydalı olabilmekte idi. 0.9.5 ve üstü
sürümler bu ayarların yapılmasına gerek bırakmayan daha iyi
algoritmalar kullanmaktadırlar.
BELLEK YÖNETİMİ
bzip2 büyük dosyaları bloklar halinde sıkıştırır. Blok boyutları, hem
sıkıştırma oranını, hem de sıkıştırma/açma için gereken bellek
miktarını etkiler. -1 den -9 a kadarki seçenekler ile istenen blok
boyutlarını 100.000 bayttan 900.000 bayta (varsayılan değer budur)
kadar tanımlamasını sağlar. Açma işlemi sırasında, sıkıştırılmış
dosyanın baş kısmından sıkıştırma esnasında kullanılan blok boyutu
okunur ve daha sonra bunzip2 kendisi için gerekli olan bellek alanını
ayırır ve oraya yerleşir. Sıkıştırma blok boyutları sıkıştırılmış
dosya içinde saklandığı için, -1 den -9 a kadar olan seçenekler açma
işlemi esnasında geçersizdir. Şayet bu seçenekleri belirtirseniz,
program bunları gözardı edecektir.
Sıkıştırma ve açma gereksinimleri, bayt cinsinden, yaklaşık olarak:
Sıkıştırma: 400k + ( 8 x blok boyu )
Açma: 100k + ( 4 x blok boyu ) veya
100k + ( 2.5 x blok boyu )
Daha büyük blok boyutları hızlı bir şekilde azalan sınıra yakın
dönüşler verir. Sıkıştırmanın pek çoğu, blok boyutunun ilk iki veya üç
yüz k lık kısmından elde edilir. Bu kuralı, küçük makinelerde bzip2
kullanırken aklınızdan çıkarmayın. Ayrıca aklınızdan çıkarmamanız
gereken diğer bir noktada, açma sırasındaki bellek gereksinimlerinizin,
sıkıştırma sırasında kullandığınız blok boyutları ile birebir alakalı
olduğudur.
900k lık öntanımlı blok boyutu ile sıkıştırılan dosyalar için, bunzip2
açma işlemi sırasında 3700 kB lık belleğe ihtiyaç duyacaktır. 4 MB lık
belleğe sahip bir makinede herhangi bir dosyayı açmak için, bunzip2,
ihtiyaç duyulan bellek miktarının yarısı ile (takriben 2300KB) açma
işlemini gerçekleştirecek bir argümana sahiptir. Bu argümanın
kullanılması açma hızını da yarı yarıya düşürecektir. Çok gerekli
olmadıkça bu seçeneği (-s) kullanmayın. (*Ç.N: günümüzde kullanılan
makineler için bu seçenek oldukça nostaljik görünebilir ama test ve
eğitim amaçlı oldukça düşük özeliklere sahip ikinci veya üçüncü
makineleri olanlar bu seçeneğin değerini anlayacaktır. P233 makinede 16
MB edoram ile harikalar :-) yaratıyor.)
Genel kural olarak, bellek sınırlarınız elverdiği sürece, mümkün olan
en büyük blokları kullanın. Böylece azami sıkıştırma elde edilir.
Sıkıştırma ya da açma hızının aslında blok boyutu ile bir ilgisi
yoktur.
Diğer bir önemli nokta da dosyalara tek bir bloğa sığacak dosyalara
yapılan işlemdir. Aslında karşılaşılan pek çok dosya bir bloktan
küçüktür. Dosya bir bloktan küçük olduğundan, gerçekte kullanılan
bellek miktarı normalde gerekenden küçük olur. Örneğin: 20.000 baytlık
bir dosyayı -9 seçeneği ile sıkıştırmak, sıkıştırıcının 7600k belleğe
ihtiyaç duymasına sebep olacaktır ama gerçekte sadece
400k+20000*8=560kB bellek kullanılacaktır. Aynı şekilde açma işlemi de
3700k lık bir bellek ayıracak ama sadece 100k+20000*4=180kB lık bir
alanı kullanacaktır.
Aşağıda değişik blok boyutlarının bellek kullanımını gösteren bir tablo
bulacaksınız. Ayrıca Calgary Text Compression Corpus'da (Calgary Metin
Sıkıştırma Külliyatı) 14 dosyalık sıkıştırılmış toplam boyut olarak
3.141.622 bayt kayıtlıdır. Aşağıdaki sütunlar, blok boyutu ile
sıkıştırma arasındaki ilgi hakkında bir fikir verecektir. Büyük
dosyalar için büyük blok boyutlarını kullanmak daha avantajlıdır. Çünkü
Külliyat daha küçük dosyalar üzerine kuruludur.
Sıkıştırma Açma -s ile açma Külliyat
Seçenek kullanımı kullanımı kullanımı boyutu
-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
HASARLI DOSYADAN VERİ KURTARMA
bzip2 dosyaları genellikle 900k lık bloklar halinde sıkıştırır. Her bir
blok birbirinden bağımsız olarak ele alınır. Bir aygıt ya da aktarım
hatası pek çok .bz2 bloğunun hasar görmesine sebep olursa, zarar
görmemiş bloklardaki verileri kurtarmak mümkün olabilir.
Sıkıştırılmış her bir blok 48 bitlik bir şablon ile temsil edilir.
Böylece blok sınırlarını kesin olarak bulmak mümkün olabilir. Ayrıca
her bir blok kendi 32 bitlik CRC'sini bulundurur, böylece bozuk bloklar
sağlam olanlardan ayırt edilebilir.
bzip2recover, basitçe, .bz2 dosyaların içindeki blokları tarayan bir
yazılımdır. Buradaki her bir taranmış bloğu kendi .bz2 dosyasına
aktarır. Sonuçların bütünlüğünü kontrol etmek için bzip2 -t komutunu
kullanabilirsiniz. Ardından bozulmamış verileri açabilirsiniz.
bzip2recover sadece hasarlı dosya ismini argüman olarak alır ve
kurtardığı blokları "rec00001file.bz2", "rec00002file.bz2" şeklinde
yazar. Bu isim numaralandırması sonradan yapılacak işlemlerdeki
simgelemlerin kullanımı içindir. Örneğin, bzip2 -dc rec*file.bz2 >
kurtarılan_veri komutu dosyaları doğru sıralama ile üretir.
bzip2recover daha çok büyük .bz2 dosyaları için faydalıdır çünkü bunlar
daha çok blok içerirler. Tek bloktan oluşmuş hasarlı bir dosya ile bu
yazılımı kullanmanın hiçbir anlamı yoktur, çünkü bozuk blok
kurtarılamaz. Şayet herhangi bir hasar durumunda zararınızı en azda
tutmak istiyorsanız, daha küçük blok boyutları kullanmanız akıllıca
olacaktır.
BAŞARIM HAKKINDA
Sıkıştırmanın sınıflandırma aşaması, birbirine benzer dizgeleri bir
araya getirmektir. Bu nedenle tekrarlanan sembollerden oluşmuş
dosyaların sıkıştırması (aabaabaabaab ... gibi) daha uzun tutabilir.
Sürüm 0.9.5 ve üzerindekilerde başarım daha iyidir. En kötü durum ile
ortalama durum sıkıştırma zamanı arasındaki oran 10:1 civarıdır. Daha
önceki sürümlerde bu durum 100:1 gibiydi. İsterseniz sürecin bütün
ayrıntılarını görebilmek için -vvv seçeneğini kullanabilirsiniz.
Açma hızı bu durumdan bağımsızdır.
bzip2 genellikle işlem yapmak için, çok MB lı bellek alanları ayırır ve
daha sonra tarafsız ve rasgele bir şekilde saldırır. Bunun anlamı, açma
ve sıkıştırma performanslarının makinenizin önbelleğine erişim süresi
ile alakalı olduğudur. Önbelleğe erişim kayıplarını düşürecek küçük kod
değişiklikleri büyük performans artışları getirebilir. Çok büyük
önbelleklere sahip makinelerde bzip2 çok yüksek başarım göstermektedir.
YETERSİZLİKLER
G/Ç hata iletileri olmaları gerektiği kadar faydalı değildiler. bzip2
G/Ç hatalarını tespit etmek ve temiz bir şekilde çıkmak için oldukça
ter döker ama bazen sorunun ayrıntıları gözden kaçabilmektedir.
Bu kılavuz sayfası bzip2'nin 1.0.2 sürümüne aittir. Bu sürüm ile
sıkıştırılmış veriler geçmiş sürümler ile tamamen uyumludur (sürüm
0.1pl2, 0.9.0, 0.9.5, 1.0.0 ve 1.0.1 ile), tek istisna 0.9.0 ve üzeri
sürümler çoklu dosya sıkıştırmaları düzgünce açabilirler, 0.1p12 bunu
yapamaz, ilk dosyayı açtıktan sonra duracak ve akımın gerisini
getirmeyecektir.
bzip2recover sürümleri 1.0.2 den önceki sürümlere göredir.
Sıkıştırılmış dosya içindeki bit konumlarını belirtmek için 32 bitlik
tamsayılar kullanırlar ve bu yüzden 512 MB'den daha büyük sıkıştırılmış
dosyalar elde edilemezler. Sürüm 1.0.2 ve üzeri 64 bitlik tam sayılar
kullanırlar ve GNU ile Windows platformlarını desteklerler. Bu tip bir
sınır ile kurulup kurulmadığını anlamak için bzip2recover'ı argümansız
olmadan çalıştırın. Her halükarda, bu sınırı ortadan kaldırmak
mümkündür. Şayet yazılımı MaybeUInt64 ile yeniden derleyebilirseniz,
işaretsiz 64 bitlik tamsayı ayarlanmış olacağından bu sınır ortadan
kalkmış olur.
YAZAN
Julian Seward, <jseward (at) acm.org> tarafından yazılmıştır.
http://sources.redhat.com/bzip2
bzip2'deki fikirlerin sahipleri şunlardır (en azından): Michael
Burrows ve David Wheeler (blok sıralamalı dönüşüm için), David Wheeler
(tekrar, Huffman kodlayıcısı), Peter Fenwick (orijinal bzip'teki
yapısal kodlama modeli ve pek çok tasfiye için) ve Alistair Moffat,
Radford Neal ve Ian Witten (orijinal bzip'teki aritmetik
kodlayıcı için). Onlara yardımları, destek ve tavsiyeleri için
şükran borçluyum. Belgeler için kaynak kod paketine bakınız.
Christian von Roques, daha hızlı sıralama algoritması için beni
cesaretlendirdi ve böylece daha hızlı bir sıkıştırma elde
edebildik. Bela Lubkin, en kötü durum sıkıştırması için cesaret verdi.
bz* betikleri GNU gzip'inkilerden türetildi. Bir çok kimse de,
yamalar gönderdi, taşınabilirlik sorunlarında yardımcı oldu,
tavsiyelerde bulundu; bunlar çoğunlukla faydalı oldu.
ÇEVİREN
Yalçın Kolukısa <yalcink01 (at) yahoo.com>, Ocak 2004
bzip2(1)