bzip2 - küme sıralamalı dosya
sıkıştırıcı
bunzip2 - sıkıştırılmış
dosyaları açar
bzcat - sıkıştırılmış
dosyaları standart çıktıda açar
bzip2recover - zarar görmüş bzip2 dosyalarındaki
verileri kurtarır
- bzip2
- [ -cdfkqstvzVL123456789 ] [ dosyalar
]...
- bunzip2
- [ -fkvsVL ] [ dosyalar ]...
- bzcat
- [ -s ] [ dosyalar ]...
- bzip2recover
-
dosya
bzip2, Burrows-Wheeler küme 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
başarımı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ğildir.
bzip2, komut satırı seçeneklerine eşlik
edecek dosya isimlerinin listesini ister. Her dosya
sıkıştırılmış
sürümü ile değiştirilir ve ismi "
özgün_dosya.bz2" şekline
dönüştürülür. Her
sıkıştırılmış dosya,
özgün 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 özgün dosya
elde edilmiş olur. Dosya isimlerinin yönetimi,
özgün 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. Bunu yapmak isterseniz
-f
seçeneğini kullanmanız gerekir.
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ı uçbirime 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ın sıkıştırmasını
açar.
bzip2 tarafından
sıkıştırılmamış dosyalar
saptanıp yok sayılır, ardından bir uyarı
verilir.
bzip2,
sıkıştırılmış dosyadan
açılacak dosyaya aktarılacak dosya ismini şu
şekilde saptamaya çalışır:
dosyaismi.bz2 => dosyaismi
dosyaismi.bz => dosyaismi
dosyaismi.tbz2 => dosyaismi.tar
dosyaismi.tbz => dosyaismi.tar
başkabirisim => başkabirisim.out
Dosya
.bz2,
.bz,
.tbz2,
.tbz veya
.bzip2
soneklerinden birine sahip değilse,
bzip2 özgün
dosya ismini saptayamamaktan yakınır ve özgün
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ış dosyalarda
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çlar standart
çıktıya peşpeşe gönderilir. Bu
şekilde çoklu dosya sıkıştırma
çok sayıda
sıkıştırılmış dosya
tanıtıcısının bulunduğu bir
akım üretir. Bu tür bir akım sadece
bzip2
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 durur.
bzcat (veya
bzip2 -dc) belirtilen bütün
dosyaları standart çıktıya açar.
bzip2, girdileri sırayla
BZIP2 ve
BZIP ortam
değişkenlerinden okur ve bu girdileri komut satırı
girdilerini okumadan önce uygular. Bu, öntanımlı
girdilerin uygulanması için elverişli bir yol
sağlar.
Sıkıştırma işlemi,
sıkıştırılmış dosya
özgün dosyadan biraz büyük olsa bile, mutlaka
yapılır. Yüz bayttan 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 yaklaşık binde 5
genişlemeye sebep olur.
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ığına bakar. Bu tedbir
sıkıştırılmış dosyada
oluşabilecek bozulmalar ve
bzip2’de olması
olası yazılım hatalarına karşı
güvenlik sağlar. Elden geçirilen her dosya için
saptanamayabilecek hata oranı mikroskobiktir ve 4 milyarda birin
altındadır. Bununla birlikte uyanık olmakta fayda
vardır, sınama sıkıştırma
açılırken yapılır ve sadece bir
takım şeylerin yanlış olduğunu
söyler.
Sıkıştırılmamış
özgün verileri kurtarmanıza yardımı olmaz.
Bu durumda, verileri kurtarmak için
bzip2recover
kullanmalısınız.
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ı).
-
-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 komut 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 seçeneğini zıddı:
hangi komut isminin kullanıldığına
bakmaksızı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ü sınar,
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. -f seçeneği kullanılırsa,
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 özgün dosyaları
silmez, saklar.
-
-s, --small
- Sıkıştırma, açma ve
sınama işlemleri için bellek ihtiyacını
azaltır. Dosyalar küme baytı 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 küme 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/Ç
hataları ve diğer önemli hata iletileri gizlenmez.
-
-v, --verbose
- Ayrıntı kipi: İşlenen her 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)’e kadar
- Sıkıştırma yaparken küme
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 girdileri
dosya isimleri olarak kabul eder. Bu girdilerin 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 sıanamaların
yapılmasını sağlamaya yönelik
seçeneklerdir. Bazen faydalı olabiliyordu. 0.9.5 ve
üstü sürümler bu ayarların
yapılmasına gerek bırakmayan daha iyi algoritmalar
kullanmaktadırlar.
bzip2 büyük dosyaları kümeler halinde
sıkıştırır. Küme 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 kadar
olan seçenekler ile istenen küme boyutlarının
100.000 bayttan 900.000 bayta (varsayılan değer budur) kadar
tanımlanması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 küme 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 küme 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. Bu
seçenekleri belirtirseniz, bunlar yok sayılacaktır.
Sıkıştırma ve açma gereksinimleri, bayt
cinsinden, yaklaşık olarak:
Sıkıştırma: 400k + ( 8 x küme boyu )
Açma: 100k + ( 4 x küme boyu ) veya
100k + ( 2.5 x küme boyu )
Daha büyük küme boyutları hızlı bir
şekilde azalan sınıra yakın
dönüşler verir.
Sıkıştırmanın pek çoğu,
küme 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
akıldan çıkarılmaması gereken diğer
bir nokta da, açma sırasındaki bellek gereksinimlerinin,
sıkıştırma sırasında
kullanılan küme boyutları ile birebir alakalı
olduğudur.
900k’lık öntanımlı küme boyutu ile
sıkıştırılan dosyalar için,
bunzip2 açma işlemi sırasında 3700 kB
belleğe ihtiyaç duyacaktır. 4 MB 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 seçeneğe sahiptir. Bu
seçeneğin 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.
Genel kural olarak, bellek sınırlarınız
elverdiği sürece, mümkün olan en
büyük kümeleri 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 küme boyutu ile bir ilgisi
yoktur.
Diğer bir önemli nokta da tek bir kümeye
sığacak dosyalara yapılan işlemdir. Aslında
karşılaşılan pek çok dosya bir
kümeden küçüktür. Dosya bir kümeden
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ınan 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 küme
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, küme boyutu ile
sıkıştırma arasındaki ilgi hakkında
bir fikir verecektir. Büyük dosyalar için
büyük küme boyutlarını kullanmak daha
iyidir. Çü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
bzip2 dosyaları genellikle 900k’lık kümeler
halinde sıkıştırır. Her bir küme
birbirinden bağımsız olarak ele alınır. Bir
aygıt ya da aktarım hatası pek çok
.bz2
kümesinin hasar görmesine sebep olursa, zarar
görmemiş kümelerdeki verileri kurtarmak
mümkün olabilir.
Sıkıştırılmış her bir
küme 48 bitlik bir şablon ile temsil edilir. Böylece
küme sınırlarını kesin olarak bulmak
mümkün olabilir. Ayrıca her bir küme kendi 32
bitlik CRC’sini bulundurur, böylece bozuk kümeler
sağlam olanlardan ayırt edilebilir.
bzip2recover, basitçe,
.bz2 dosyaların
içindeki kümeleri tarayan bir yazılımdır.
Buradaki taranmış her küme kendi
.bz2
dosyasına aktarılır. Sonuçların
bütünlüğünü sınamak
için
bzip2 -t komutunu kullanabilirsiniz. Ardından
bozulmamış verileri açabilirsiniz.
bzip2recover girdi olarak sadece hasarlı dosya ismini alır
ve kurtardığı kümeleri "
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 küme
içerirler. Tek kümeden oluşmuş hasarlı bir
dosya ile bu yazılımı kullanmanın hiçbir
anlamı yoktur, çünkü bozuk küme
kurtarılamaz. Şayet herhangi bir hasar durumunda
zararınızı en azda tutmak istiyorsanız, daha
küçük küme boyutları kullanmanız
akıllıca olacaktır.
Sıkıştırmanın
sınıflandırma aşaması, birbirine benzer
dizgeleri bir araya getirmektir. Bu nedenle tekrarlanan simgelerden
oluşmuş dosyaların
sıkıştırması (aabaabaabaab ... gibi) daha
uzun sürebilir. 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
başarımları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 başarım artışları
getirebilir. Çok büyük önbelleklere sahip
makinelerde
bzip2 çok yüksek başarım
göstermektedir.
G/Ç hata iletileri olmaları gerektiği kadar faydalı
değildir.
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.8
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, 1.0.1, 1.0.2 ve
üstü ile). İstisnalar: 0.9.0 ve üzeri
sürümler çoklu dosya
sıkıştırmalarını
düzgünce açabilir, 0.1p12 bunu yapamaz, ilk
dosyayı açtıktan sonra duracak ve akımın
gerisini getirmeyecektir.
bzip2recover 1.0.2’den önceki sürümler
sıkıştırılmış dosya
içindeki bit konumlarını belirtmek için 32 bitlik
tamsayılar kullanır ve bu yüzden 512 MB’den daha
büyük
sıkıştırılmış dosyalar elde
edilemez. Sürüm 1.0.2 ve üzeri 64 bitlik
tamsayılar kullanır ve GNU ile Windows
platformlarını desteklerler. Böyle bir
sınır ile kurulup kurulmadığını
anlamak için
bzip2recover’ı komut
satırı girdileri olmadan
çalıştırılır. Yine de, bu
sınırı ortadan kaldırmak
mümkündür. Yazılımı MaybeUInt64 ile
yeniden derleyebilirseniz, işaretsiz 64 bitlik tamsayı
ayarlanmış olacağından bu sınır
ortadan kalkmış olur.
Julian Seward 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 (küme
sıralamalı dönüşüm için),
David Wheeler (tekrar, Huffman kodlayıcısı), Peter
Fenwick (özgün bzip’teki yapısal kodlama modeli ve
pek çok tasfiye için) ve Alistair Moffat, Radford Neal ve Ian
Witten (özgün 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. Dona Robinson belgeleri XML’e
dönüştürdü.
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.
© 2004 Yalçın Kolukısa
© 2022 Nilgün Belma Bugüner
Bu çeviri özgür yazılımdır:
Yasaların izin verdiği ölçüde
HİÇBİR GARANTİ YOKTUR.
Lütfen, çeviri ile ilgili bildirimde bulunmak veya çeviri
yapmak için
https://github.com/TLBP/manpages-tr/issues adresinde
"New Issue" düğmesine tıklayıp yeni bir
konu açınız ve isteğinizi belirtiniz.