tar olmadan gzip? Neden birlikte kullanılıyorlar?


60

Neden tar ve gzip, hemen hemen her zaman birlikte kullanılır, sadece gzip değil? Bu yöntemin bir avantajı var mı?

Yanıtlar:


72

TAR , birçok dosyadan tek bir arşivlenmiş dosya oluşturur, ancak bunları sıkıştırmaz.

Ayrıntıları Biçimlendir

Bir tar dosyası bir veya daha fazla dosyanın birleştirilmesidir. Her dosya 512 baytlık bir başlık kaydından önce gelir. Dosya verileri, uzunluğu 512 baytın katlarına yuvarlanması ve fazladan boşluk doldurulması haricinde, değiştirilmemiş olarak yazılır. Bir arşivin sonu, en az iki ardışık sıfır dolu kayıtla işaretlenir.

GZIP , tek bir dosyayı başka bir tek dosyaya sıkıştırır ancak arşiv oluşturmaz.

Dosya formatı

... Her ne kadar dosya formatı aynı zamanda bu tür çoklu akışların birleştirilmesine de izin veriyorsa da (sıkıştırılmış dosyalar, sanki tek bir dosyadaymış gibi birleştirilerek sıkıştırılmış şekilde sıkıştırılmış), gzip normalde sadece tek dosyaları sıkıştırmak için kullanılır. [4] Sıkıştırılmış arşivler, genellikle dosya koleksiyonlarını tek bir katran arşivine birleştirerek ve sonra da bu arşivi gzip ile sıkıştırmak suretiyle oluşturulur.


12
"Tgz" dosyası diye bir şey yoktur. Bu bir tar.gz. Gzip'in işi, içeriğini sıkıştırmak veya açmaktır (bu durumda, bir katran arşivi). Tipik Unix boru hattının felsefesidir ve bu nedenle benzersizdir.
luis.espinal

5
Hayır, .tar.gz benzersiz değildir: .tar.bz2, .cpio.gz, vb. Aynı şekilde çalışır.
user46971

3
@ user36310 Prensip olarak ne demek istediğinizi biliyorum, ancak pratikte araçlar tek bir dosyayı çıkartmanıza izin veriyor. tar -xzvf tarball.tar.gz single/file.txt. Sahnelerin ardında fazladan bir çalışma yapması gerekiyor, ancak görünüşe göre tek bir dosya alıyor.
Rich Homolka

4
Dosya büyük bir arşivin sonundaysa, bu "çok fazla çalışma" yı yapın. Açıkça rastgele erişime ihtiyacınız varsa, zip / rar / xar / 7z / lzh / arj / cab / sit vb. Üstün formatlardır.
LaC

3
Kesin olarak, .tar.*sıkıştırılmış bir arşiv her zaman “katı” dır, yani. tek bir sıkıştırılmış akıştan oluşur. .zipÖte yandan bir arşiv hiç sağlam değil, sıkıştırma algoritması her dosya için yeniden başlatılıyor. Rasgele erişimi hızlandırmak için sıkıştırma verimini feda eder. .7zarşivler katı olabilir, katı olmayabilir veya katı bloklara sahip olabilir.
Daniel B,

17

Gzip / Bzip2, akış kompresörleridir. Bir veri akışını daha küçük bir şeye sıkıştırırlar. Tek tek dosyalar üzerinde kullanılabilirler, ancak kendi başlarına dosya gruplarında kullanılamazlar.

Öte yandan Tar, yolları, izinleri ve mülkiyet bilgilerini içeren bir dosya listesini tek bir sürekli akışa çevirme yeteneğine sahiptir - ve tersi.

Bu nedenle, dosyaları arşivlemek için (ve birinin de sıkıştırma gerektiriyorsa), genellikle tar + some sıkıştırma yöntemini kullanır.


12

Tar tek bir şeyi iyi yapmaktan sorumludur: (un) tek bir arşiv dosyasına arşivleme (dışarıdan). Neyin? Bir ve sadece bir şey: bir dizi dosya.

Gzip, tek bir şeyi iyi yapmaktan sorumludur: (un) sıkıştırmak. Neyin? Sadece bir şey ve bir şey: her türden tek bir dosya ... ve bu tar ile oluşturulan bir dosyayı içerir.

UNIX'in boru hattı felsefesine, altında yatan "boru ve filtreler" mimarisine; her şeyin bir dosya olarak ele alınması ve "tek-şey-tek-tek-tek-ve-iyi-iyi" ses mimari hedefi (bu, çok şık ve basit bir eklenti oyunuyla sonuçlanır) .)

Sadeliği, doğada neredeyse cebirseldir (sistem tasarımında ağır bir hedef). Ve bu kolay bir başarı değil.

Birçok yönden (kusurları olmadan), bu hemen hemen beste, modülerlik, gevşek bağlanma ve yüksek uyum bakımından bir doruk noktasıdır. Eğer bu dördü anlarsanız (ve gerçekten anlıyorum demek istersen), anlarsınız, niçin tar ve gzip'in çiftler halinde böyle çalıştığı açıktır.


1
Bu UNIX felsefesi gayet güzel, ama katı olmayan arşivler yaratarak, kısa düştüğünü gözlemliyorum. (1 GB'lık bir tar.gz'den tek bir dosyayı çıkarmak bir acı olmamalı ve burada anladığım kadarıyla ZIP, tar.gz'den çok daha üstündür ... doğru mu?)
Mehrdad

@Mehrad - İlk olarak , sağlam olmayan bir arşiv nedir? Voltaire'a atfedildiği gibi, "Benimle sohbet edecekseniz, önce şartlarınızı tanımlamanız gerekir." . İkincisi , evet, boru ve filtreler mimarisi, herhangi bir başka mimaride olduğu gibi, güzelliğinden bağımsız olarak belirli durumlarda yetersiz kalmaktadır. Bu bir modikum mühendisliği ile verilen bir şey ve bu yapılan bir tartışma değil. Üçüncüsü , zip, gzip ve katrandan daha üstündür, ama istediğin bu değildi. Zip ve tar'in neden yaptıkları gibi çalıştıklarını ve herhangi bir avantaj olup olmadığını sordunuz ve size teknik bir cevap verildi.
luis.espinal

@Mehrad - ayrıca, 1gig tar.gz dosyasını unzipping | untar yaparken ne tür sorunlarla karşılaştığınızı bilmiyorum. Bunu birçok kez yaptım, eski gzip kurulumları ile 2GB'a kadar (ve daha yeni gzip sürümleriyle 4 gb'ye kadar.) Düz fermuar ile yapılmış gibi benzer performans sorunlarıyla karşılaşırsınız. Heck, gzip girişini bir sokete dağıtan bir borudan uzak bir prosese bile hedefsiz kaldım. Bunu zip ile dene. Her sorun için, uygun aracı kullanın (tar | gz veya zip.)
luis.espinal

8

Her şeyden önce, TAR dosya arşivleri oluşturmak için yaratılmadı . Bu Tape ARchiver . İşi bir kasete kasetten / kasete yazmak veya yüklemek.

-F seçeneği daha sonra başka bir program tarafından sıkıştırılabilir "sanal teyp" gibi bir dosyayı kullanmak yapar. Aslında, böyle bir sıkıştırma gerçek dünya bantlarında da olur.

Elbette, bir programı iyi yapmak için kullanma felsefesi de bu durumda sayılır, ancak biri TAR arşivlerinin neden içerikler + içerikler dizini yerine bir akış olarak yapılandırıldığını kaçırabilir.


3
Sağ ... ZIP dosyaları tüm dosya bilgilerini birleştirilmiş bir başlığa koyar, sonra tüm dosya içeriğini ... bir ZIP dosyasına daha fazla dosya eklemeyi imkansız kılar ... tüm dosyayı yeniden yazmanız gerekir ... TAR formatı, her bir dosya için başlık ayrıdır, böylece tüm kaseti yeniden yazmadan kolayca daha fazla dosya ekleyebilirsiniz
JoelFan

5

Geleneksel olarak, Unix sistemleri başına bir görevi gerçekleştirmek için bir program kullanılan Unix felsefesi : taraslen teyp yedekleme (dolayısıyla için, tek bir dosya içinde birden fazla dosya paketlemek için sadece bir araç olduğunu tar, t maymun ar bıçaklamak). tarsıkıştırma sağlamaz; Elde edilen sıkıştırılmamış arşiv, tipik olarak başka bir program ile sıkıştırılır gzip, bzip2ya da xz. Eski günlerde compressbunu yapmak için komutu kullanırlardı; daha yeni sıkıştırma algoritmaları bundan çok daha etkilidir.

Unix felsefesi tarafından dikte edilen oldukça modüler yaklaşım, burada açıklandığı gibi sıkıştırılmış arşivlerin oluşturulması da dahil olmak üzere her programın uygun şekilde ayrı ayrı kullanılabileceği veya daha karmaşık görevleri gerçekleştirmek için birleştirilebileceği anlamına gelir. Bu tür görevler için, bireysel araçları gerektiğinde değiştirmeyi de kolaylaştırır; sıkıştırma programını, taryardımcı programı değiştirmek zorunda kalmadan farklı bir sıkıştırma algoritması kullanmak üzere değiştirirsiniz .

Bu modüler yaklaşım, dezavantajları olmadan değildir. Gibi söz diğer cevaplara yorumlarında, böyle bir adanmış sıkıştırılmış arşiv biçimi .zipdosyaları tek tek ayıklama daha iyi idare edebilir; Sıkıştırılmış tarball'ların, arşivin sonuna yakın dosyaları çıkartmak için neredeyse bütünüyle sıkıştırılması gerekirken, .ziparşivler içeriklerine rasgele erişime izin verir. ( .7zKatı ve katı olmayan arşivlerin yanı sıra daha büyük arşivlerde değişen boyutta katı blokları destekleyen bazı yeni biçimler .) tarAyrı bir sıkıştırma aracıyla birlikte kullanılmaya devam edilmesi , gelenek ve uyumluluk meselesidir; Ayrıca, .7zve .zipizinler gibi Unix dosya meta desteklemez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.