Linux ile veriler nasıl sıkıştırılır ve arşivlenir?

Microsoft Windows kullandıysanız zip dosyalarını da mutlaka kullanmışsınızdır. Microsoft’un XP’den başlayarak Windows işletim sistemine dahil etmesiyle bu özellik popüler hale geldi. Zip programı, büyük dosyaları (hem metin hem de diğer birçok türü) küçük dosyalar haline kolayca sıkıştırmanıza olanak tanır. Linux ise birkaç dahili dosya sıkıştırma programı içerir. Bu yazımızda Linux ile veri sıkıştırma, arşivleme ve kullanımına değiniyoruz.

Linux için mevcut yardımcı dosya sıkıştırma programları ve açıklamaları şöyle;

Araç Uzantı Açıklama
bzip2 .bz2 Burrows-Wheeler sıkıştırma algoritmasını ve Huffman kodlamasını kullanır.
compress .Z Orijinal Unix dosya sıkıştırma aracıdır.
gzip .gz GNU projesinin sıkıştırma aracıdır. Lempel-Ziv kodlamasını kullanır.
zip .zip Windows’un PKZIP programının Unix versiyonudur.

Compress” dosya sıkıştırma programı genelde Linux sistemlerinde bulunmaz. Ancak karşımıza .Z uzantılı bir dosya çıktığında ilgili paketi indirerek kullanmak zorunda kalabiliriz.

Linux sistemlerinde en çok kullanılan sıkıştırma aracı “gzip”tir. gzip orijinal Unix sıkıştırma aracının ücretsiz bir sürümünü ortaya çıkarma çabalarının bir ürünüdür. GNU araçlarının zaten bu şekilde ortaya çıktığına değinmiştik.

gzip paketi şunları içerir;

  • dosyaları sıkıştırmak için gzip aracı
  • sıkıştırılan metin dosyalarını görüntüleyebilen gzcat
  • dosyaları ayıklamak (açmak, extend) için gunzip.

gzip komutunun kullanım şekli şöyledir:

gzip ile bir dosya sıkıştırıldıktan sonra, dosya uzantısı .gz olacak şekilde yeni sıkıştırılmış dosya oluşturulur, ancak eski dosya silinir;

gzip komutu ile dosya sıkıştırma

Örnekte görüldüğü gibi sıkıştırma işlemi sonrası ls komutu ile yaptığımız listelemede “GNU_tools” adlı dosyanın artık var olmadığını, sadece “GNU_tools.gz” adlı sıkıştırılmış halinin bulunduğunu görüyoruz.

Dosyanın aslının kalmasını istiyorsak “-k” (keep input file) parametresini kullanabiliriz;

Dosyanın aslının kalması için -k parametresi kullanılır

Böylece asıl dosyayı da muhafaza etmiş olduk. Dosya boyutlarından yaklaşık olarak 2,5 kat bir sıkıştırma oranı görüyoruz.

Çoğu bash komutunda olduğu gibi “*” karakteri kullanarak benzer isimdeki dosyaları tek seferde sıkıştırabiliriz;

Sıkıştırılmış dosyaları ayıklamak

gzip ile sıkıştırdığımız dosyaları ayıklamak için gunzip komutunu kullanıyoruz.

gunzip komutu ile sıkıştırılmış bir dosyayı ayıklıyoruz

bzip2 ile de bir dosyayı sıkıştırmak için benzer komutları kullanıyoruz;

bzip2 ile sıkıştırılmış dosyayı ayıklamak için ise;

Dosyanın türüne göre değişse de bzip2 ile gzip’e göre daha iyi sıkıştırma oranları elde edilebilir.

Dosyaları Arşivlemek: tar komutu

Linux ve Unix sistemlerinde dosyaları arşivlemek için kullanılan popüler araç “tar”’ komutu. tar komutu aslında ilk dönemlerde dosyaları bir teyp cihazına yazıp arşivlemek için kullanılırdı. Evet, bildiğimiz manyetik teypler. Ancak komut, çıktılarını bir dosyaya da yazabilir. Günümüzde dosyaları arşivlemek için kullanılan popüler yöntem de nitekim bu.

tar komutunun kullanımı şu şekilde;

tar komutu ile birlikte kullanılabilecek oldukça fazla parametre ve özellik mevcut. Bu bilgileri tar komutunun yardım bilgilerinden ya da man sayfasından öğrenebilirsiniz;

ya da

Örneğin, yukarıdaki örneklerde yer alan “my_” ile başlayan dosyaları arşivleyelim;

Dört adet betik dosyasını tar komutu ile arşivlemek

Burada kullandığımız “-c” parametresi “create” kelimesine atıfta bulunarak yeni bir arşiv dosyası oluşturmasını, “-v” parametresi işlenen dosyaları listelemesini, “-f” parametresi ise çıktının bir dosya (file) olacağını belirtmek için kullanıldı. Genel kullanım bu şekilde olsa da farklı amaçlar için farklı parametreler kullanılabilir.

Bir arşiv dosyasının içindeki dosyaları görüntülemek için “-tf” parametresi kullanılabilir;

-tf parametresi ile arşivlenen dosya içeriği listelenir

Buradaki listeleme dosyaları ayıklamaz, sadece içeriğini listeler.

Arşiv dosya içeriğini ayıklamak için tar komutu ile birlikte “-xvf” parametrelerini birlikte kullanabiliriz;

Arşivleme işlemini yapan parametrenin “-c”, ayıklama işlemini yapan parametrenin “-x” (extract) olduğuna dikkat edin.

Oluşturulmuş bir arşiv dosyasına başka bir dosya daha ilave etmek isterseniz “-r” parametresini kullanmalısınız;

Bir klasörü tamamen arşivlemek için ise;

komutunu kullanabiliriz. Klasör adından sonra “/” simgesini koymayı unutmayın.

Arşivlerken dosyaları sıkıştırmak

Dikkat ettiyseniz arşivleme ve sıkıştırmanın aynı şeyler olmadığını fark etmişsinizdir.

Dosyaları tar komutu ile arşivlerken aynı zamanda sıkıştırılmasını da sağlayabiliriz. tar komutu ile birlikte “-z” parametresini kullanmak arşivlenecek dosyaları aynı zamanda gzip ile sıkıştıracaktır.

Yukarıdaki örnekte dört adet .sh uzantılı dosyayı “-zcvf” parametresi ile hem arşivledik hem de sıkıştırdık. Ardından soya ayrıntılarını listeledik ve listeye aynı dosyaların sadece arşivli hali olan “my_files.tar” dosyasını da ekledik.

Sadece arşivlenen “my_files.tar” ve hem sıkıştırılıp hem de arşivlenen “arsiv.tar.gz” dosyalarının boyutlarına bakacak olursak, sırasıyla 10240 byte ve 1301 byte olduğunu göreceğiz. Bu da arşivleme ve sıkıştırma arasındaki farkı ortaya koyuyor.

Arşivlenip sıkıştırılmış bir dosyayı ayıklamak için ise ayıklama parametrelerine “-z”yi de ekliyoruz;

İnternetten indirdiğiniz bir dosyanın uzantısı size dosyanın sadece arşivli mi (tar) yoksa aynı zamanda sıkıştırılmış mı (tar.gz) olduğu hakkında bilgi verecektir. Ancak dosya hakkında daha detaylı bilgiyi “file” komutu ile edinebileceğinizden bahsetmiştik.

file komutu ile dosya türleri hakkında bilgi alabiliriz

Yukarıdaki örnekte üç farklı dosyanın file komutu çıktısını görüyoruz. file komutu ile dosyaların sıkıştırılma ya da arşiv durumları hakkında bilgi edinmiş oluyoruz.

Linux dünyasındaki açık kaynak pek çok kod ve program tar komutu ile arşivlenen ve/veya sıkıştırılan paketler halinde yayılmaktadır. Sıklıkla karşımıza .tar, .gz ve .tar.gz uzantılı dosyaların çıkması muhtemel. Linux ile veri sıkıştırma konusunda daha detaylı bilgiler için komutların bilgi sayfalarını incelemeyi ve pratik yapmayı unutmayın.

BİR CEVAP BIRAK