Sıkıştırılmış Dosyalar

tar Dosyaları

TAR dosyaları, birden fazla dosyanın tek bir dosya haline getirilmesine yarar. Eskiden daha yaygın kullanılan kasetler, özellikle dosyaların arşivlenmesi için sıralı okuma/yazma işlemi yapmaktadır. Bu tip cihazlara dosyaları aralarında boşluk olmadan, sıralı bir biçimde okuyup yazabilmek için dosyaları bir araya getirip tek bir dosya haline getirmek gerekmektedir. tar programı TAR dosyası oluşturarak bu işi yapar. İsmi bu yüzden Tape ARchive sözcüklerinin kısaltmasından gelmektedir. Oluşturulan dosyalara genellikle tarball denilir. Burada ufak bir kelime oyunu yapılmaktadır. Tarball aslında denizde veya okyanusta katılaşarak topaklaşan petrol kalıntısına denilir. Bu tip topaklaşmalar sırasında petrol, civarındaki başka parçacıkları da bir araya getirdiği için bu benzetme yapılmıştır.

TAR dosyaları, birden fazla dosyayı bir araya getirmek için kullanılır, ancak sıkıştırma gerçekleştirmezler. tar programı UNIX'in 7. versiyonunda geliştirilmiştir ve ilerileyen yıllarda tar dosyalarının yapısı standartlaştırılmıştır. Her ne kadar tar dosyaları sıkışmış dosyalar olmasa da, tar programı oluşturduğu dosyayı daha sonra sıkıştırabilecek, veya sıkıştırılmış tar dosyalarını açabilecek yeteneklere sahiptir.

tarball

Basit bir tarball dosyası aşağıdaki gibi oluşturulabilir.

tar -cvf tarball.tar 03-debug.txt putty.log

Burada 03-debug.txt ve putty.log dosyalarını birleştirip, tarball.tar isimli bir dosya oluşturulmaktadır. -c parametresi create'in kısaltması olarak, bir tar dosyası oluşturulacağını belirtmektedir. -v parametresi, hemen her GNU/Linux programında olduğu gibi verbose anlamına gelir, programın yaptığı işlem hakkında bilgi vermesini sağlar. -f parametresi ise kendisinden sonra dosya isminin belirtileceği anlamıan gelmektedir, file sözcüğünün kısaltmasıdır.

tar -xvf tarball.tar

Yukarıdaki örnekteyse, create yerine extract'in kısaltması olan -x parametresi kullanılmıştır. Tahmin edeceğiniz üzere burada da sadece tarball.tar dosyası "açılmaktadır".

tar -xvf tarball.tar putty.log

Eğer tarball.tar dosyası içinden bütün dosyaları değil de, sadece putty.log dosyasını çıkarmak istersek, yukarıdaki gibi çıkartılacak dosyayı parametre olarak sağlayabiliriz.

Yukarıdaki gibi, bir tarball içinden sadece belirli bir dosyayı çıkarmak istiyorsak, ilgili tarball'un içeriğini bilmemiz gerekir. Bunun için list'in kısaltması olarak kullanılan -t parametresini aşağıdaki gibi kullanmak yeterli olacaktır.

eaydin@dixon ~/calisma/zip $ tar -tvf tarball.tar 
-rwxrwxr-- eaydin/eaydin 20728203 2015-11-20 16:33 03-debug.txt
-rwxrwxr-- eaydin/eaydin   112548 2015-11-20 17:49 putty.log

Oluşturulan tarball dosyalarında, dosyaların izinleri korunmaz. Mevcut sistemdeki izinleri korumasını istersek, preserve permissions'ın kısaltması olan -p parametresini de eklemek gerekecektir.

tar -cvfp tarball.tar *.log

Mevcut tar dosyasına başka dosya eklemek için, append anlamına gelen -r parametresi kullanılır.

tar -rf tarball.tar 03-debug.txt

Unutulmaması gereken nokta, tarball dosyasına yeni bir dosya eklemek için, ilgili tarball'un sıkıştırılmış olmaması gerekir. Sıkıştırılmış dosyalara (tar.gz, tar.bz2) sonradan dosya ekleyemezsiniz, sıkıştırma algoritmalarının doğası gereği, dosyayı yeniden oluşturmanız gerekir.

tar.gz

Oluşturulacak tarball dosyasının sıkıştırılmış bir dosya olacağını belirtmek için, daha önce kullandığımız standart parametreler arasına, zip'in kısaltması olarak -z eklenmesi gerekir.

tar -cvzf tarball.tar.gz 03-debug.txt putty.log

Benzer şekilde sıkıştırılmış bir dosyayı açacağımız zaman da -z ile tar programına açacağı dosyanın sıkıştırılmış bir dosya olduğunu belirtmek gerekir.

tar -xvzf tarball.tar.gz

Bu parametre ile kullanılan algoritma, GNU Zip algoritması olduğu için, aslında arka planda birazdan göreceğimiz gzip programını kullanır. Bu yüzden genellikle GNU Zip ile sıkıştırılmış tarball dosyalarına .tar.gz uzantısı verilir.

tar.bz2

Eğer sıkıştırma algoritması olarak GNU Zip yerine bzip2 kullanılmasını istersek, -z yerine -j parametresini hem tarball oluşturulurken, hem de açılırken kullanmak gerekir.

tar -cvjf tarball.tar.bz2 03-debug.txt putty.log
tar -xvjf tarball.tar.bz2

Sıkıştırılmış Dosyalar

gzip

GNU Zip dosyaları, sıkıştırma amacıyla kullanılır. Tek dosyayı girdi olarak alır. Dolayısıyla birden fazla dosyanın tek paket halinde sıkıştırılması gerekiyorsa, yukarıda gördüğümüz örneklerdeki gibi, önce tarball oluşturulup, sonra gzip ile sıkıştırmak gerekir.

Aşağıda, tek dosyanın doğrudan sıkıştırılması gerçekleştirilir.

gzip putty.log

Bu işlemin sonucunda putty.log.gz isimli bir dosya oluşur ve putty.log dosyası silinir.

Eğer mevcut dosyanın korunması isteniyorsa, -c parametresiyle oluşturulan verinin standart çıktıya yazdırılması sağlanabilir. Standart çıktı hakkında detaylı bilgi kitabın ilerleyen bölümlerinde yer almaktadır.

gzip -c putty.log > putty.log.gz

Oluşan bir dosyayı "açmak" içinse, GNU Unzip'in kısaltması olan gunzip kullanılır.

gunzip putty.log.gz

Veya gzip'in decompress anlamına gelen -d parametresi kullanılabilir.

gzip -d putty.log.gz

bz2

bzip2 putty.log

Sıkıştırılmamış dosyayı siler.

bunzip putty.log.bz2
bzip2 -d putty.log.bz2

tar, gz, bz2 dosyaları için kullanabileceğiniz bir cheat-sheet şurada mevcut.

zip ve unzip

zip log-dosyalari.zip *
eaydin@dixon ~/calisma/zip $ unzip -l log-dosyalari.zip 
Archive:  log-dosyalari.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
 20728203  2015-11-20 16:33   03-debug.txt
   112548  2015-11-20 17:49   putty.log
---------                     -------
 20840751                     2 files
 eaydin@dixon ~/calisma/zip $ unzip log-dosyalari.zip -d yeni-dizin
Archive:  log-dosyalari.zip
  inflating: yeni-dizin/03-debug.txt  
  inflating: yeni-dizin/putty.log

rar ve unrar

rar a arsiv.rar *.log
eaydin@dixon ~/calisma/zip $ unrar l arsiv.rar 

UNRAR 5.00 beta 8 freeware      Copyright (c) 1993-2013 Alexander Roshal

Archive: arsiv.rar
Details: RAR 4

 Attributes      Size    Date   Time   Name
----------- ---------  -------- -----  ----
 -rwxr-xr--  20728203  03-12-15 10:51  debug.log   
 -rwxr-xr--    112548  20-11-15 17:49  putty.log   
----------- ---------  -------- -----  ----
             20840751                  2
unrar e arsiv.rar

Z Komutları

GNU/Linux sistemlerde özellikle log dosyalarının sıkıştırılarak saklanması yaygın tekniklerdir. Sıkıştırılmış bu dosyalar içinde arama yapmak, dosyanın bir kısmını okumak veya dosyalar arası farklılıkları incelemek gerekebilir. Bu tip işlemler için sıkça kullanılan komutların z ile başlayan versiyonları geliştirilmiştir.

zcat, zless, zmore, zgrep, zegrep, zdiff komutlarını bu tip dosyalar üzerinde çalışmak için kullanabilirsiniz.

Last updated