Linux terminalinde Tar ile dosyalar nasıl arşivlenir

09/30 2015
Tar arşiv içeriği
Çoğu masaüstü ortamı, arşivlerin içeriğini görüntüleyebilir. İşte LXDE'de (Raspberry Pi için tercih edilen masaüstü) bir tarball'a çift tıklamanın sonucu.

Çoğu kişi muhtemelen Zip dosyaları oluşturmaya, göndermeye veya almaya oldukça aşinadır. Zip, bir dosya koleksiyonunu alır ve bunları bir Zip arşiv dosyasında depolar ve bu süreçte verileri sıkıştırır.

Dosyaların içeriğini depolamanın yanı sıra, bir nesneyle ilişkili ekstra bilgi olan tüm meta verilerini de depolar. Dosyalar söz konusu olduğunda, değişiklik zamanlarını, sahiplerini ve izinlerini ve tabii ki her dosyanın adını içerir.

Bir arşivi açtığınızda, tüm bu bilgiler ayıklanır, bu da orijinal dosya setini tam olarak oldukları gibi yeniden oluşturur, bu oldukça kullanışlıdır!

Arşivlerin çeşitli kullanımları vardır, ancak en popüler olanları, bir dizi dosyayı indirilmek üzere bir araya getirmeyi içerir - tek bir dosyanın işlenmesi daha kolaydır ve sıkıştırma, indirmeyi daha hızlı hale getirir - ve yedeklemeler oluşturur. Zip uzun süredir piyasada olduğu için herkes onu kullanabilir ve tüm işletim sistemleri halledebilir. Bununla birlikte, Zip'in bir takım dezavantajları vardır.

Ana sorun, sıkıştırmasının modern standartlara göre zayıf olmasıdır. Son 25 yılda sıkıştırma teknolojisi ilerledi ve Zip'te iyileştirmeler yapılmış olsa da, daha iyi alternatifler mevcut.

Zip'in bir başka dezavantajı, bir dosyaya arşivleme amaçlı olması, oysa bazen verileri başka bir cihaza veya hizmete göndermek istiyoruz.

Tar'ı Anlamak

Linux ve Mac OS X dahil olmak üzere Unix benzeri işletim sistemleri için standart arşivleme programı Tar'dır, çünkü Tar orijinal olarak teyp sürücülerinde (Tape ARchive) yedeklemeleri depolamak için kullanılmıştır.

Katran

Zip'ten farklı bir şekilde çalışır çünkü arşivlenen tüm verileri standart çıktısına gönderir ve birçok teyp sürücüsünde zaten yerleşik donanım sıkıştırması bulunduğundan verileri varsayılan olarak sıkıştırmaz.

Sıkıştırma kodunun olmaması bir dezavantaj gibi görünebilir, ancak aslında bir kolaylıktır. Tar, verilerini harici bir sıkıştırma programı aracılığıyla aktarabildiği için, Tar programı geliştirildiğinde mevcut olmayan herhangi bir sıkıştırıcıyı bile kullanabilir.

Sıkıştırma programları bir dosya veya veri akışı üzerinde çalışır ve tek bir sıkıştırılmış dosya veya akış üretir, bu nedenle bu, işi iki kısma ayırır: arşivleme ve sıkıştırma. Bu daha karmaşık görünse de, Tar detayların kendisinin üstesinden gelme konusunda mükemmel bir yeteneğe sahiptir.

Diyelim ki foo adlı bir dizinimiz var . Genellikle tarball olarak adlandırılan bir arşiv oluşturmak istiyoruz. Şu seçeneklerden birini yapabiliriz:

tar cf foo.tar foo

tar czf foo.tar.gz foo

tar cjf foo.tar.bz2 foo

tar cJf foo.tar.xz foo

c seçeneği Tar programına bir arşiv oluşturduğumuzu, f ise arşivi verilen isimle bir dosyada sakladığımızı söyler. Bu nedenle, ilk komut foo.tar adlı sıkıştırılmamış bir arşiv oluşturur .

Sonraki komutlar, Tar'a hangi sıkıştırma türünün kullanılacağını söyleyen fazladan bir seçenek ekler: z , gzip sıkıştırmasını kullanır, j , bzip2 sıkıştırmasını kullanır ve J , xz sıkıştırmasını kullanır. (Büyük harf kullanımına dikkat edin!)

Tar bağımsız değişkenleri ve seçenekleri

Bu argümanların, komutları daha okunabilir kılan uzun versiyonları da vardır, ancak çoğumuz tembeliz ve yazmak için daha kısa olan versiyonunu kullanıyoruz. Ancak, isteseydik bu komut satırını da kullanabilirdik:

tar --create --gzip --file foo.tar.gz foo

Dosya uzantısı gerekli değildir, ancak bu, insanların tam olarak ne tür bir arşiv olduğunu görmelerini kolaylaştıran bir kuraldır - sistemin kendisinin böyle bir yardıma ihtiyacı yoktur, çünkü tüm bunları kendi başına halledebilir. Bir arşivi açmak, basitçe c'yi x ile veya --create'i --extract ile değiştirme meselesidir . Ancak, Tar'ın anladığı gibi, sıkıştırma türünü vermenize gerek yoktur:

tar xf foo.tar.gz

Eklemek isteyebileceğiniz başka bir seçenek, Tar'ın ne yaptığını size göstermek için v veya --verbose seçeneğidir.

Size bir tarball verildiyse paketini açmadan içinde ne olduğunu görmek isteyebilirsiniz. Bir arşiv, özellikle de bir yedek oluşturduysanız, ona güvenmeden önce doğru olup olmadığını kontrol etmek isteyebilirsiniz. Test seçeneği bütünlüğü kontrol eder ve arşiv içeriğini listeler.

tar tvf foo.tar.gz

Bunlar ana Tar seçenekleridir, ancak programın yeni bir arşiv oluşturmak yerine mevcut bir arşive dosya eklemek için A veya --concatenate gibi çok daha fazlası vardır.

Gelecek provası

Tar'ın, sıkıştırmayı başka bir programa ilettiği için ortaya çıkan herhangi bir yeni sıkıştırma formatını kaldırabileceğinden bahsetmiştik. Bunu gzip, bzip2 ve xz için otomatik olarak yapmak için komut satırı seçenekleri var, peki ya birisi yeni bir sıkıştırıcı bulursa?

Sdc gibi bir şey söyle - süper kandırılan kompresör? Sıkıştırılmamış bir tarball oluşturabilir ve ardından onu sıkıştırmak için sdc'yi kullanabilirsiniz, ancak bu israflı ve yavaştır. Bunun yerine bir boru kullanın:

katran foo | sdc >foo.tar.sdc

unsdc foo.tar.sdc | katran xv

Burada Tar ile sadece --create seçeneğini kullanıyoruz . Bir hedefin olmaması, Tar'ın arşiv verilerini standart çıktıya göndermesine neden olur ve bu daha sonra sdc kompresör programına aktarılır. İkinci komut işlemi tersine çevirir, arşivi açar ve çıkartma için Tar'a gönderir.

  • Bu makale TechRadar'a Linux, açık kaynak geliştirmeleri, dağıtım sürümleri ve çok daha fazlası hakkında bilginizi artırmak için bir numaralı dergi olan Linux Format tarafından sağlanmıştır. Linux Formatının basılı veya dijital sürümüne buradan abone olun (yeni sekmede açılır)