TAR (dosya biçimi)

**TAR** (Kökeni **T**ape **AR**chive) 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ı