Linux ve Muhteşem TAR

Unix haliyle Linux’te tar komutu öncelikli ve ya birincil sıkıştırma ve/ve ya arşivleme komutu ve aracıdır. TAR komutunun seçeneklerini anlamak dosyalarınızı düzenlemenizde size yardımcı olacaktır.

tar komutunda en genel kullanımv – uzun uzadıya işlenen tüm dosyaların adlarını listelerv – uzun uzadıya işlenen tüm dosyaların adlarını listeler

cvf – CREATE VERBOSELY FILENAME
c – yeni bir archive oluştur
v – uzun uzadıya işlenen tüm dosyaların adlarını listeler
f – peşinden gelen arşiv dosyasının adını oluşturur

Bu işlem sıkıştırma işlemi yapmayacaktır, sıkıştırma işlemi yapıp yerden kazanmak istiyorsanız o zaman seçenekler içine z yani gzip sıkıştırma opsiyonunu eklemelisiniz.

czvf – CREATE GZIP VERBOSELY FILENAME

z – arşiv dosyasını gzip sıkıştırma algoritması ile oluşturacaktır.

czvf – CREATE BZIP VERBOSELY FILENAME

j – arşiv dosyasını bzipped(bzip2) algoritması ile oluşturacaktır – bzip2 gzip’e göre daha uzun sürer ancak daha fazla sıkıştırma sağlayacaktır

xf – EXTRACT FILENAME
x – adı verilen arşivden dosyaları çıkarır (eXtract)

xzf – EXTRACT GZIP FILENAME
xz – adı verilen GZIP arşivden dosyaları çıkarır (eXtract)

xjf – EXTRACT BZIP2 FILENAME
xj – adı verilen BZIP2 arşivden dosyaları çıkarır (eXtract)

ve

tvf – LIST VERBOSELY FILENAME

t- Dosyanın içerisinde var olan dosyaları ve dizinleri listeler / görüntüler
z- gzip arşiv dosyalarını listelemek için (tvzf)
j- bzip2 arşiv dosyalarını listelemek için (tvjf)

Bu kadarı bile belki tüm hayatınız boyunca yeterli olacaktır ancak biz biraz daha derine girelim bakalım başka neler yapabiliyormuşuz ; kim bilir belki binlerce dolar verip aldığınız çözümleriniz zaten elinizde ücretsiz bir şekilde vardır…


Tek Dosyayı Arşivden Çıkarma
Tek bir dosyayı bir tar arşiv dosyasından çıkaracaksanız o dosyanın adını yazmanız gerekiyor.Bu yüzden t opsiyonu ile o dosyanın adı ve konumun önce alıp sonra aşağıdaki komut gibi kullanmalısınız.Bu arada çıkardığı dosya aynı dizin yapısı ile çıkacaktır.

Örnek kullanım :
$ tar xvf arsiv_dosya.tar /dizin/altdizin/dosya

Eğer arşiviniz gzip yada bzip2 ise o zaman şu komutları kullanmalısınız :

$ tar xvfz arsiv_dosya.tar.gz /dizin/altdizin/dosya

$ tar xvfj arsiv_dosya.tar.bz2 /dizin/altdizin/dosya


Bir Dizini Arşivden Çıkarma
Tek bir dizini ve içindeki dosyaları bir tar arşiv dosyasından çıkaracaksanız o ddizinin adını yazmanız ve sonuna slash “/” koymanız gerekiyor.Bu yüzden t opsiyonu ile o dizinin adını önce alıp sonra aşağıdaki komut gibi kullanmalısınız.Bu arada çıkardığınız dizin aynı dizin yapısı ile çıkacaktır.

Örnek kullanım :
$ tar xvf arsiv_dosya.tar /dizin/altdizin/

Birden fazla dizini arşiv dosyasından çıkarmak için dizinleri peşpeşe yazmanız yeterli

Örnek kullanım :
$ tar xvf arsiv_dosya.tar /dizin/altdizin/ /dizin/altdizin2/ /dizin/altdizin3/

Farklı arşiv dosyaları için yine z ve j opsiyonlarını kullanmalısınız

GZIP Örnek kullanım :
$ tar xvzf arsiv_dosya.tar.gz /dizin/altdizin/ /dizin/altdizin2/ /dizin/altdizin3/

BZIP2 Örnek kullanım:
$ tar xvjf arsiv_dosya.tar.bz2 /dizin/altdizin/ /dizin/altdizin2/ /dizin/altdizin3/


Arşivden Belirli Grup Dosyaları Çıkarma (Wildcard *)
Eminim bu yazıda en çok ilginizi çekebilecek alt madde bu olsa gerek.Çünkü özellikle websitelerini yedekleyen yazılımcıların en büyük sıkıntısı yedeklerden dönerken grafik çalışmalarının kaybolmasını istememeleridir.

Örnek kullanım:
$ tar xvf arsiv_dosya.tar –wildcards ‘*.php’


Var Olan Arşiv Dosyasına Dizin yada Dosya Ekleme
Hepinizin bu başlık konusunda gözlerinin parladığına eminim ama baştan uyarayım bu işlem ancak SIKIŞTIRILMAMIŞ arşiv dosyası için geçerli.Yani GZIP ve BZIP2 için bu işlemi yapmaya kalktığınızda hata alacak ve işlem gerçekleşmeyecektir.

Dosya ekleme örnek kullanım:
$ tar rvf arsiv_dosya.tar yenidosya

Dizin ekleme örnek kullanım:
$ tar rvf arsiv_dosya.tar yeniklasor/


Arşiv Doğrulama
Başlık olarak ne yazacağıma emin olamayınca mecburen bu şekilde yazmak zorunda kaldım. Esasında almış olduğunuz arşivin içeriğinin aldığınız dosya yada dizindeki içerikle aynı olup olmadığını sorgulayabilmek güzel bir seçenek; işte size bunu yapabilmeniz için gerekli olan komut :

$ tar –compare –verbose -f arsiv_dosya.tar
ve ya
$ tar dvf arsiv_dosya.tar

/dizin/altdizin/ornek_dosya.txt
/dizin/altdizin/ornek_dosya.txt : Mod time differs
/dizin/altdizin/ornek_dosya.txt : Size differs
/dizin/altdizin/ornek_dosya1.txt
/dizin/altdizin/ornek_dosya2.txt
/dizin/altdizin/ornek_dosya3.txt
/dizin/altdizin/ornek_dosya3.txt : Mod time differs

Yukarıdaki örnekte ornek_dosyası.txt içerisine girilmiş değişiklik yapılmış ve kayıt edilmiş. ornek_dosya3.txt dosyasına ise içerisinde bir değişiklik yapılmamış ama arşiv yaratılma tarihinden sonra dosya yeniden kayıt edilmiş.Gördüğünüz üzere ornek_dosya2.txt dosyası ise arsivin yaratıldığı tarihten bu yana hiç bir değişikliğe maruz kalmamış.
Hepinize bol TAR lı günler dilerim.
Eğer yukarıdaki komutu –verbose opsiyonu olmadan kullanırsanız sadece değişiklik yapılmış dosyaları görebilmenizi sağlar.

Örnek kullanım:
$ tar –compare -f arsiv_dosya.tarsıkıştırmayacaksanızsıkıştırmayacaksanız
ve ya
$ tar df arsiv_dosya.tar du -sh

Diskimde Yer Yok , Kaç KB Olur Bu Arşiv
Eğer sıkıştırmayacaksanız arşiviniz elbette diskte kapladığı yer bilgisini sadece
du -sh dizin_adi
yazarak bulabilirsiniz.Ama eğer bir sıkıştırma uygulayacaksanız o zaman tar komutunu aşağıdaki gibi yazarak tar arşiv dosyasının yaklaşık ne kadar yer kaplayacağı bilgisine sahip olaiblirsiniz:

Örnek kullanım:
tar cjf – PDF_Documents/ | wc -c

burada özellikle f opsiyonundan sonra bir tire işareti koymayı unutmayın lütfen.Bu arada eğer sıkıştırma için gzip algoritmasını kullancaksanız o zaman komutu

tar czf – PDF_Documents/ | wc -c

olarak girmeniz gerekiyor ama zaten yer probleminiz var ise gzip yerine bzip’i kullanmanız daha doğru olacaktır.

About the Author

Melih Melik SÖNMEZ
1976'da İstanbul'da doğdum.