TAR (dosya biçimi)

TAR (Kökeni Tape ARchive) ya da bir başka deyişle tarball, açık kaynak kodlu bir belge sıkıştırma ve arşivleme biçimidir.

Genel olarak TAR arşivleri *.tar uzantısına sahiptir. Arşiv harici bir programla sıkıştırılmış ise, sıkıştırma programı dosya sonuna kendi uzantısını ekler. (Ör: Tar.gz, Tar.bz2 gibi.)

Bu dosya biçimi POSIX.1-1988 ve daha sonra POSIX.1-2001 tarafından standart haline getirilmiştir. Başlangıçta işlenmemiş dosya biçimi olarak geliştirilmiş, disk yedeklemek için kullanılmış, şimdi ise yazılım dağıtımı ve arşivleme için birçok dosyayı tek bir dosyada saklamak için (kullanıcı izinleri, tarih, dizin yapısı gibi dosya sistemi bilgilerini de içeriyor) kullanılmaktadır.

Tar biçiminin doğrusal kökleri onun herhangi bir akış üzerinde çalışabilme yeteneği ve parçalı dışa çıkarımdaki yavaşlığında görebilir ki bu son dosyayı açmak için tüm arşivi okumasından ileri gelir. Tar dosyası genellikler tartopu olarak da anılır.
Tar, sadece bir şeyi ama en iyi şekilde yap UNIX felsefesini takip eder ki bu da arşivlemektir. İç yapısında sıkıştırmayla ilgili bir ünite olmadığı için harici sıkıştırma programları ile beraber kullanılır.
Harici programlar ise sadece bir dosyayı sıkıştırabilir ki Tar ile birleştiklerinde birden fazla dosyayı sıkıştırabilmiş olurlar.

Tar dosya isimleri 
Birçok UNIX uygulaması gibi, Tar da bir dosyanın arşiv olduğunu anlamak için belirli bir uzantıya ihtiyaç duymaz. Genel olarak tar arşivleri .tar uzantısına sahiptir. Eğer bir arşiv harici bir programla sıkıştırılmışsa, sıkıştırma programı dosya sonuna kendi uzantısını ekler(.tar.Z,.tar.gz,.tar.bz2 gibi). MSDOS sisteminde böyle uzantılar olamayacağı için değişik ikincil bir uzantı geleneği türedi. Buna göre tar.gz için .tgz, .tbz2 için .tbz ve .tar.Z için .taz uzantıları kullanılmaya başlandı.

Dosya biçimi detayları 
Tar dosyası bir veya daha fazla dosyanın birleşiminden oluşur. Her dosyadan önce bir başlık bloğu gelir. Dosya verileri değiştirilmeden yazılır, sadece uzunluğu 512 nin katlarına yuvarlanır ve boşluklar sıfırla doldurulur. Dosya sonu en az iki ardıl sıfır dolu blokla işaretlenir.

Eski disklere sadece 512 baytlık bloklar halinde veri kaydedilebiliyordu. Bu yüzden tar dosyası 512 baytlık bloklar halinde düzenlenir.

Dosya başlığı 
Başlık bloğu dosya ile ilgili bilgileri içerir. Değişik platformlar arasında taşınabilirliği sağlamak için bu bloktaki bilgi ASCII ile kodlanmıştır. Bu yüzden eğer bütün arşiv yazı dosyasında oluşuyorsa, aslında tar dosyası bir ASCII dosyasıdır.

Aşağıdaki tabloda orijinal UNIX tar biçimi tarafından tanımlanmış alanlar gösterilmiştir. Bir alan kullanılmadığında sıfır ile doldurulur. Başlık 512 baytlık olması için sıfırla tamamlanmıştır.

Program örnekleri 
Tar programının temel kullanımı

Tar dosyası oluşturmak için 
Tüm .txt uzantılı dosyaları gzip ile sıkıştırıp dieforwhat.tar.gz isimli dosya oluşturmak için

 tar -cvf dieforwhat.tar.gz *.txt

Tar dosyasının içindeki dosyaları sıralamak 

 tar -tzf dieforwhat.tzr.gz

Dosyaları tar dosyasından çıkarmak 

Sıkıştırılmış tar dosyasından tüm dosyaları çıkarmak

 tar -xzvf dieforwhat.tar.gz

Belirli bir klasöre çıkarmak

 tar -xzvf dieforwhat.tar.gz -C /usr/bin

Bazı Tar işlem ve seçenekleri 
—create
 -c
 Yeni bir tar arşivi yaratır.

 --list 
 -l
 Arşivin içeriğini listeler.

 --extract
 -x
 Arşivi dışarıya aktarır.

 --file
 -f
 Arşiv dosyasının ismini belirler.

 --verbose
 -v 
 Tar'ın üzerinde çalıştığı dosyayı gösterir.

 --verbose—verbose
 -vv
 Dosyalar hakkında daha detaylı bilgi gösterir.

 --append
 -r
 Arşivin sonuna dosya ekler.

 --update
 -u
 Arşivin sonuna sadece yeni dosyaları ekler.

 --compare
 -d
 Arşiv dosyalarını karşılaştırır.

 --concatenate
 -A
 Arşiv sonuna yeni arşiv ekler.

 --show-defaults
 Varsayılan tar özelliklerini gösterir.

 --files-from=
 -T
 Herhangi bir metin dosyasından arşivlenecek dosyaların listesini okur.

 --one-file-system
 Sadece bir dosya sistemini arşivler.

 --directory=
 -C
 Kendisinden sonra gelen dosya için aktif dizini değiştirir.

Kaynakça 
 GNU Tar Sayfası

Bilgisayar dosya biçimleri
Dosya sıkıştırma formatları