Linuxte Arşiv İşlemleri (tar kullanımı)

.tar Dosyası Nedir?

.tar dosyları bir veya birden fazla dosya veya dizinin peş peşe eklenerek tek bir dosyada birleşmiş halidir.

Tar Programı

Tar programı ile dosyalarınızı arşivleyebilir, arşivlerinize dosya ekleyip silebilir ve arşivinizi açabilirsiniz.

NOT: tar programı sıkıştırma yapmaz. Ancak parametre ile belirtilirse tar programı diğer sıkıştırma programlarını kullanarak tar arşivini sıkıştırabilir.

NASIL ARŞİV OLUŞTURULUR?

tar programını kullanarak aşağıdaki şekilde arşiv oluşturabilirsiniz.

# tar cf arsivadi.tar arsive_eklenecek_dosyalar

Şeklinde kullanabilirsiniz.

root@pc:~/dizin$ touch dosya1.txt
root@pc:~/dizin$ touch dosya2.txt
root@pc:~/dizin$ ls
dosya1.txt  dosya2.txt

root@pc:~/dizin$ tar cf arsiv.tar dosya*

root@pc:~/dizin$ ls
arsiv.tar  dosya1.txt  dosya2.txt

Yazdığımız komutları incelersek

dizin klasörünün içerisinde dosya1.txt dosya2.txt adında iki dosya oluşturduk.

c parametresi ile create(yarat) ile arşiv oluşturma komutunu vermiş oluyoruz.

f parametresi kendisinden sonra gelen ismi arşiv ismi olarak belirtmemizi sağlıyor.


arsiv.tar yerine uzantıyı yazmadanda arşiv oluşturabiliriz. Ancak dosyanın bir arşiv dosyası olduğunun anlaşılması için .tar soyadını dosyaya eklemenizde fayda var. Arşiv dosyalarının sonuna .tar eklemek bir UNIX geleneğidir.

Tabi file programı ile dosyanın sonunda .tar olmasa bile dosyanın hangi türde olduğunu öğrenebiliriz.

root@pc:~/dizin$ tar cf arsiv dosya1.txt dosya2.txt

root@pc:~/dizin$ file arsiv
arsiv: POSIX tar archive (GNU)

Dizinleri Arşivlemek

root@pc:~/dizin$ ls
dosya1.txt  dosya2.txt dizin2

root@pc:~/dizin$ tar cf arsiv.tar dosya1.txt dosya2.txt dizin2

root@pc:~/dizin$ ls
arsiv.tar  dosya1.txt  dosya2.txt  dizin2

arşiv adını belirttikten sonra arşive eklemek istediğimizi dosya ya da dizinlerin adını yazmamız yeterli.

ARŞİV İÇERİĞİNİ GÖRÜNTÜLEMEK

tar programını kullanarak arşivi çıkartmadan arşivin içindeki dosyaları görüntülememiz mümkün.

# tar tf arsiv.tar

root@pc:~/dizin$ tar tf arsiv.tar
dizin2/
dizin2/dosya4.txt
dizin2/dosya3.txt
dizin2/dosya5.txt
dosya1.txt
dosya2.txt

t parametresi table of content yani içerik tablosu demektir. Arşiv içeriğini listeler.

Eğer v parametresini eklerseniz dosyaların okuma/yazma izinlerini ve oluşturulma tarihlerinide görebilirsiniz.

ARŞİVİ ÇIKARTMAK

# tar xf arsiv.tar

root@pc:~/dizin$ tar xf arsiv.tar

root@pc:~/dizin$ ls
dosya1.txt  dosya2.txt

x parametresi ile arşivimizi çıkartmak istediğimizi belirttik(extract)

ARŞİVE DOSYA EKLEMEK

Bir arşiv oluşturdunuz ve içerisine yeni dosya eklemek istiyorsunuz. Bunun için ilk önce arşivi çıkartırsınız daha sonra ise içerisine eklemek istediğiniz dosya ile beraber tekrardan arşiv oluşturursunuz değil mi? Aslında buna gerek yok tar programı bunun için bize çözüm bulmuş.


# tar rf arsiv.tar eklenecekdosya.txt

root@pc:~/dizin$ touch eklenecekdosya.txt
root@pc:~/dizin$ ls
arsiv.tar  dizin2  dosya1.txt  dosya2.txt  eklenecekdosya.txt

root@pc:~/dizin$ tar tf arsiv.tar
dizin2/
dizin2/dosya4.txt
dizin2/dosya3.txt
dizin2/dosya5.txt
dosya1.txt
dosya2.txt

root@pc:~/dizin$ tar rf arsiv.tar eklenecekdosya.txt

root@pc:~/dizin$ tar tf arsiv.tar
dizin2/
dizin2/dosya4.txt
dizin2/dosya3.txt
dizin2/dosya5.txt
dosya1.txt
dosya2.txt
eklenecekdosya.txt

r parametresi append anlamındadır. Yani sonuna ekle diyor. Arşivimizin sonuna belirtilen dosyayı eklememizi sağlıyor.

ARŞİVDEN DOSYA SİLME

Arşiv içerisinden arşivi açmadan dosya ve dizin silmek için --delete parametresi kullanılır.

root@pc:~/dizin$ tar tf arsiv.tar
dizin2/
dizin2/dosya4.txt
dizin2/dosya3.txt
dizin2/dosya5.txt
dosya1.txt
dosya2.txt
eklenecekdosya.txt

root@pc:~/dizin$ tar f arsiv.tar --delete eklenecekdosya.txt

root@pc:~/dizin$ tar tf arsiv.tar
dizin2/
dizin2/dosya4.txt
dizin2/dosya3.txt
dizin2/dosya5.txt
dosya1.txt
dosya2.txt

root@pc:~/dizin$ tar f arsiv.tar --delete dizin2

root@pc:~/dizin$ tar tf arsiv.tar
dosya1.txt
dosya2.txt

Yukarıda görüldüğü gibi --delete parametresi ile belirtilen dosya ve dizin arşivin içerisinden silindi. Üstelik arşivi açmamıza gerek kalmadan.