İ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.
 
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