Yanıtlar:
tar
sadece tek bir dosyayı birden fazla dosyadan çıkarır, gzip
veya gibi bir sıkıştırma programını bir araya getirmedikçe sıkıştırma yapmaz bzip2
( sırasıyla veya seçeneklerini tar
kullanarak içinden arayabileceğiniz ). hem arşivlemeyi hem de sıkıştırmayı tek bir programda birleştirir.-z
-j
zip
katran
zip
Zip'in dosyaları ayrı ayrı sıkıştırması, özellikle küçük birçok benzer dosyadaki sıkıştırma oranlarını etkileyecektir.
(En azından bu on yıl önce tam olarak doğruydu.)
Tar, Zip’den çok daha fazla meta veri korur, karşılaştırmamı görün (biraz modası geçmiş):
(Yakınlaştırmak için tıklayın)
Tar, testlerin% 65'ini geçtiğinde, Zip yalnızca% 17'yi geçer. Test setini github'da BSD lisansı altında hazırladım, böylece Mac'iniz varsa kendiniz deneyebilirsiniz. Linux için orada herhangi bir meta veri olup olmadığından emin değilim, bu nedenle bu testler alakalı olmayabilir.
Verimlilik farklı şekillerde ölçülebilir:
"Sonuçta ortaya çıkan arşivleri işlemek için araçlar ne kadar yaygın?" Gibi başka sorular da var.
Bu nedenle, örneğin, bzip2
dosyalardan daha küçük dosyalar oluşturur gzip
, ancak çok daha uzun sürebilir. Ayrıca, benim deneyimlerime göre gzip
Unix benzeri sistemler üzerinde evrensel, ancak bzip2
hala değil (çok yaygın ve genellikle kolay elde edilmekle birlikte).
Wim'in belirttiği gibi, katran kendini sıkıştırmaz. Eğer tar ekleyerek sıkıştırırsanız (örneğin bir .tar.gz veya .tar.bz2 elde etmek için), tüm tar dosyasını bir seferde sıkıştırıyorsunuzdur. Buna karşılık, zip, her dosyayı ayrı ayrı sıkıştırır.
Verimlilik iş yüküne bağlıdır. Özellikle, zip tek tek dosyalara doğrudan erişmenizi sağlar. Tar ile, önce istenmeyen (sıkıştırılmış) dosyaları araştırmanız gerekir. Sıkıştırma performansı, sıkıştırdığınız şeye bağlıdır. tar
ile bzip2
benzer dosyaların çok sayıda (örneğin bir kaynak dizin) için sık sık daha iyidir. zip
Her dosya çok farklı içeriğe sahipse daha iyi olabilir.
Zip arşivleri sonunda içeriklerinin merkezi bir dizinini içerir (önceden dizini oluşturmak zorunda kalmamaktan kaçının, muhtemelen içinde ne olacağını bilmiyorsunuz). Bu, tüm arşivin paketini açmak zorunda kalmadan tek tek dosyaları hızlıca çıkarmanıza olanak tanır: Sadece arşiv dizinini okuyun ve yalnızca gerekenleri çıkarın. Bununla birlikte, bu, tüm arşivin erişilebilir olmasını ve sadece blok cihazlarda (disketler, sabit sürücüler) kullanılabilen rasgele erişim gerektirir . Ek olarak, arşiv dizini savunmasızdır: Arşiv bir nedenden dolayı kesilirse , arşivden yararlı bir şey çıkarmak için ağır sihirbazlık gerektirir .
BBS kullanımı için zip arşivleri oluşturuldu; bir dizinin içeriğini tek bir (ve sıkıştırılmış) dosyaya bir araya getirebilmek önemliydi - muhtemelen binlerce tek dosya indirmek zorunda kalmadı. Çoğu web sitesi gibi, aynı nedenlerle bugün bile indirmelerini bir araya getiriyor.
Teyp arşivleri, teyp sürücülerinde kullanılacak yedeklemeleri bir araya getirmek için tasarlandı, bu nedenle sıralı erişim için . Merkezi bir dizin yok; bunun yerine, arşiv, bir kaç blokta hangi dosyaların takip edeceğini gösteren düzenli aralıklarla başlık blokları içerir. Katran arşivleri bir baskın düştü; Eğer sadece tek bir dosya çıkarılacaksa, arşiv en baştan başlayarak istenen dosya bulunana kadar (ki en sonunda olabilir) sırayla okunur. Bunun üzerine sıkıştırma uygulanır; tar arşivleri uygulanan çeşitli sıkıştırma programlarından biri ( compress
, gzip
,bzip2
vb.) akış kompresörleridir ve arşivin sıralı yapısını hiçbir şekilde değiştirmez. En kötü durumda, çıkartmaya başlayana kadar biraz daha fazla bloğa ihtiyacınız olacak.
Bu önemsiz bir fark gibi görünebilir, ancak aslında felsefede bir kutupsal zıttı temsil eder. Zip arşivleriyle, her zaman dosyayla faydalı bir şey yapmak için tüm dosyanın el altında bulundurulması gerekir, oysa katran arşivi bir boru hattına aktarılabilir. Büyük bir tar arşivi indirebilir ve ilk birkaç blok gelir gelmez en baştan çıkarmaya başlayabilirim (ve aradığım dosyayı alır almaz indirmeyi kesebilirim). Zip arşivi için, arşivin en sonunda yer alan arşiv dizini görünene kadar beklemem gerekiyor. Ama bir kere yapmak çok daha hızlı bir tar dosyasından olacak ondan kısmi içerikleri ayıklanması, el altında tüm dosya var.
Her iki formatın da, nerede ve nasıl kullanıldıklarına bağlı olarak, onlar için güçlü bir nokta vardır. Boru hatları (ve böylece bir işlemden diğerine veri akışı kavramı) yalnızca Unix dünyasında gerçekten var olduğu için, tar arşivlerinin ana avantajı diğer sistemlerde kayboluyor, bu yüzden Zip arşivleri burada daha popüler. Ancak katran arşivleri daha esnektir, bu yüzden ne zaman bir seçeneğim olsa onları tercih ederim.
Diğerinin daha önce de söylediği gibi, tar, gzip veya bzip2 gibi bir akış yorumlayıcısı ile sıkıştırılabilecek tüm dosyaların büyük bir “bloğunu” oluşturur.
Bunun dezavantajı, arşiv içindeki bir dosyaya erişmek için dosyanın tamamını açmanız gerekmesidir.
Bunun avantajı, özellikle sıkıştırılmış dosyalar çok benzer olduğunda, sıkıştırma oranının genellikle daha yüksek olmasıdır.
"Rar" gibi diğer paketleyicilerin de aynı etkiye sahip olması için "blok modu" (veya benzeri) vardır.