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.logBurada 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.tarYukarı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.logEğ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.logOluş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 *.logMevcut tar dosyasına başka dosya eklemek için, append anlamına gelen -r parametresi kullanılır.
tar -rf tarball.tar 03-debug.txtUnutulmaması 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.logBenzer ş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.gzBu 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 veya .tgz 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. Bu format için yaygın uzantılar .tar.bz2 veya .tbz2'dir.
tar -cvjf tarball.tar.bz2 03-debug.txt putty.logtar -xvjf tarball.tar.bz2tar.xz
Daha yüksek sıkıştırma oranı sunan xz algoritmasını kullanmak için -J parametresi kullanılır. Uzantı olarak genellikle .tar.xz veya .txz kullanılır.
tar -cvJf tarball.tar.xz *.logtar -xvJf tarball.tar.xztar.zst
Modern ve hızlı bir sıkıştırma algoritması olan zstd (Zstandard) kullanmak için genellikle -I zstd veya --zstd parametresi kullanılır (kullanılan tar sürümüne bağlı olabilir). Uzantı olarak .tar.zst veya .tzst kullanılır.
# --zstd kullanımı (daha yeni tar sürümlerinde)
tar -cv --zstd -f tarball.tar.zst *.log
tar -xv --zstd -f tarball.tar.zst
# -I kullanımı (bazı eski sürümlerde de çalışabilir)
# tar -cv -I zstd -f tarball.tar.zst *.log
# tar -xv -I zstd -f tarball.tar.zstÖnemli Not: Modern tar sürümleri, bir arşivi açarken (-x kullanılırken) sıkıştırma türünü genellikle otomatik olarak algılayabilir. Bu nedenle, çoğu zaman -z, -j, -J gibi sıkıştırma belirtme parametrelerini açma işlemi sırasında kullanmak gerekmeyebilir. Sadece -xvf arsiv_dosyasi komutu yeterli olabilir. Ancak, oluştururken doğru sıkıştırma parametresini belirtmek önemlidir.
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.logBu 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.gzOluşan bir dosyayı "açmak" içinse, GNU Unzip'in kısaltması olan gunzip kullanılır.
gunzip putty.log.gzVeya gzip'in decompress anlamına gelen -d parametresi kullanılabilir.
gzip -d putty.log.gzbz2
bzip2 putty.logSıkıştırılmamış dosyayı siler.
bunzip putty.log.bz2bzip2 -d putty.log.bz2tar, gz, bz2 dosyaları için kullanabileceğiniz bir cheat-sheet şurada mevcut. (Not: Bu kaynakta xz ve zstd gibi daha yeni formatlar bulunmayabilir.)
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.lograr ve unrar
rar a arsiv.rar *.logeaydin@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 2unrar e arsiv.rarNot: rar formatı ve sıkıştırma aracı tescilli bir yazılımdır. unrar aracı genellikle ücretsiz olarak sunulsa da, rar dosyası oluşturmak için lisans gerekebilir. Diğer formatlar (gz, bz2, xz, zst, zip) genellikle açık kaynaklı ve ücretsiz araçlarla yönetilir.
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