- İ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 (yazılım hatası).
     
 
- 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  BELLEK YÖNETİMİ-  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
 BELLEK YÖNETİMİ-  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 ç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.
     - 
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