Dosyaları sıkıştırmak için en iyi arşiv formatı seçimini nasıl değerlendirebilirim?


24

Genel olarak, aşağıdakileri gözlemledim:

  • Linux-y dosyaları veya araçları, arşivleri dağıtmak için bzip2 veya gzip kullanır
  • Windows-y dosyaları veya araçları arşiv dağıtmak için ZIP kullanır
  • Birçok kişi 7-Zip'i kendi arşivlerini oluşturmak ve dağıtmak için kullanır

Sorular:

  • Hepsi açık format gibi görünen bu formatların avantajları ve dezavantajları nelerdir? Ne zaman / niçin bir tanesini (örneğin, 7-Zip) bir başkasıyla (örneğin, ZIP) seçmeliyim?
  • Bunların tümü taşınabilir biçimler olsa bile, yukarıdaki eğilim neden beklemede görünüyor? Belirli bir platformda belirli bir arşiv formatı kullanmanın herhangi bir avantajı var mı?



@Sathya, @Andreas: Bağlantılar için teşekkürler, bunlar yardımcı ve sorumun cevap kısımları. :)
Mehrdad

1
Sıkıştırma oldukça karmaşık bir alandır ve hiç kimse algoritması her şey için en uygun sonuçları veremez - ayrıca, kaynaklara atmanız ve daha iyi sonuçlar almanız, aynı zamanda neredeyse çok daha az zamanda yapılabilen bir problemdir. Bazı algoritmalar hızlı ve hafızada durmaya odaklanır, bazıları ne kadar sürdüğüne veya 12GB RAM'e (abartılı değil) ihtiyaç duyup duymadığınıza bakmaksızın mümkün olan en küçük dosyayı oluşturmaya odaklanır.
Phoshi

1
@ Phoshi, bu bir cevap olmalı.
Yitzchak

Yanıtlar:


16

Çok çeşitli sıkıştırma formatları ve yöntemleri mevcuttur, bazıları hiç sıkıştırmaz ve bir arşivi birden fazla dosyayı depolamak için tasarlanmıştır ve diğer yeni deneysel kompresörler ( PAQ tabanlı) mümkün olduğunca agresif biçimde sıkıştırmak üzere tasarlanmıştır. söz konusu işlemi gerçekleştirmek için geçen süreden bağımsız olarak.

Gereksinim duyduğunuz özellikleri sıkıştırma yöntemi seçiminizden değerlendirmeniz ve ayrıca kullanılacak bağlamı göz önünde bulundurmanız gerekir.

Farklı özellikler ve düşünceler şunları içerir:

  • Sıkıştırma yeteneği - Dosyayı yeterince küçültüyor mu?
  • Kullanım kolaylığı - Dosya başka bir kullanıcıya gidiyorsa, arşivin çıkarılması kolay mı olacak yoksa daha fazla yazılımın yüklenmesini mi gerektirecek?
  • Parola koruması ve / veya şifreleme - Bu güvenlik önlemleri gerekli mi?
  • Çoklu cilt desteği - Hedef ortam, dosyanın uygun parçalara bölünmesini gerektiriyorsa, biçim bunu zarif bir şekilde destekliyor mu? Örneğin, bir CD için 650 MB.
  • Tamir ve kurtarma - Dosya kısmen bozuksa, verilerin geri yüklenmesine yardımcı olmak için bir kurtarma kaydı sunuyor mu?
  • Unicode desteği - Arşivleyici uluslararası dosya adlarını mı yoksa sadece standart ASCII'yi mi destekliyor?
  • Sistem Gereksinimleri - 7-Zip gibi modern kompresörler , daha büyük bir sözlük kullanarak sıkıştırma verimliliğini artırma imkanı sunar (bir sözlük, sıkıştırılmış bir dosyada sıkça tekrarlanan verilerin bir referansıdır), ancak bu, hem sıkıştırma hem de sıkıştırma zamanı.
  • Kendi kendine ayıklama desteği - Arşiv, kullanımı gereken kişilere kullanım kolaylığı sağlayan yürütülebilir bir dosyaya alınabilir mi? (Ayrıca, yalnızca tek bir platform için kendiliğinden açılan bir araç oluşturabileceğinizi de unutmayın. Genel olarak, bir Windows kendiliğinden açılan menü, Wine gibi bir uyumluluk katmanından geçmedikçe varsayılan olarak Linux'ta çalışmaz).
  • Dosya sistemi özellikleri - Kompresör, ilgili dosya sistemi meta verilerini ve çıkarma noktasında korunmaya değer olabilecek izinleri saklıyor mu?

Genel olarak konuşulan ZIP en yaygın formattır, ancak 4 GB’in üzerindeki boyutlar genellikle desteklenmez (hiç de olsa), güvenlik desteği genellikle düşük olarak kabul edilir (standart şifre düz metin saldırısıyla tehlikeye girebilir ve daha fazla şifreleme genellikle, ticari ZIP yazılımı satıcıları tarafından biçimin resmi olmayan bir türevi olarak uygulanır).

Bunun dışında, diğer popüler biçimlerin çoğu, daha fazla yazılım yükleyerek tüm işletim sistemlerinde bir tür destek sağlayacak.

Kişisel seçimim 7-Zip , çünkü harika ve esnek bir sıkıştırma var; Windows'ta kendine özgü bir kullanıcı arayüzüne sahip olmasına rağmen. Linux ve Mac OS X için de-kompresörler vardır (standart olarak GUI'ye rağmen).


3
Arşiv dağıtım amaçlıysa, hedef kitlenizi göz önünde bulundurmanız ve platformlarında varsayılan olarak desteklenen bir format kullanmanız da önemlidir. Erişilebilirlik, bu durumda diğer hususlardan daha önemli olabilir.
Hammar

+1 bilgi için teşekkürler, ancak bu mermi noktalarını hangi formatları desteklediğini söylemek daha iyi olurdu . :)
Mehrdad,

Baştan çıkarmıştım, ancak listelenmesi çok zaman alabilen çok sayıda biçim var. Wikipedia'da yardımcı olabilecek sıkıştırma formatları iyi bir özellik matrisi var: en.wikipedia.org/wiki/Comparison_of_archive_formats
Ruairi Fullam

1
Tarih kendi kendine açılan arşiv dosyalarına gelince önemli bir ders veriyor. Makinelerin MS / PC-DOS programlarını çalıştıramayacağı, ya da kendi kendine açılan programların işlemcinin değiştiği sonucu çöktüğü ya da kendi kendine çalışanların çökmesi nedeniyle insanların artık kendi kendine ayıklayamayacağı kendiliğinden açılan arşivler var. çıkarıcılar, disklerin çok büyük olmasını beklemeyeceğinden, olmadıklarında disklerin dolu olduğundan şikayet eder veya…
JdeBP

Bu nokta kesinlikle tartışmalı, o özel soruna rastlamadım, ancak gerçekleştiğini görebiliyorum; Bunların hepsinin arşivi oluşturma hedefinin ve dosyaların kullanımı beklenen ömrünün bir sorusu olduğunu düşünüyorum. Kuşkusuz, DOS çağından çıkarmak zor eski bir arşiviniz varsa, DOSBox kullanabilir, hatta gerekirse VM de oluşturabilirsiniz.
Ruairi Fullam,

8

Akla gelen bir şey Jeff Atwood'dan (Çok Çekirdekli Dönemde Dosya Sıkıştırma ) (iki yaşında) bir blog yazısı . Bu makalede, bzip2'nin ikiden fazla çekirdek çalıştırırken 7-fermuardan daha iyi performans gösterdiğini buluyor.


+1 omg! Bunu bilmiyordum. Yine de sıkıştırma oranı buna değmez gibi görünüyor. :)
Mehrdad

2
Bu gönderi 2 yıldan daha eski. Artık 7-zip ikiden fazla çekirdekle daha iyi çalışmıyor mu?
cregox,

BZIP2, 100-900KB bloklara sıkıştırıldığı için blokları ayrı çekirdeklere yaydığı için çok sayıda çekirdeğe daha verimli bir şekilde sıkıştırır, ancak blokları ayrı çekirdeklere yayabilir, ancak bu blokların birbirinden farklı olduğu kabul edildiğinden sıkıştırma verimliliği kaybolur.
Ruairi Fullam,

4

İlk olarak, 7-Zip, verileri sıkıştırmak ve açmak için birçok algoritmayı kullanabilen bir arşivleyicidir.

İkinci sorunuza göre, platformun verilen formatı destekleyen araçları desteklediğinden emin olun. Örneğin, Mac'te RAR kullanmaktan kaçınırdım . Kullanımı mümkün olsa ve onu destekleyen ücretsiz programlar olsa da, RAR'ı destekleyen Windows yardımcı programlarının (benim deneyimlerime göre) sahip oldukları daha zengin arayüze sahip değiller.


Oysa ben şahsen grafiksel rar programlarından nefret ediyorum ve her zaman Windows'ta bile komut satırını kullanıyorum.
CarlF

4

Diğerlerinin de belirttiği gibi, belirli bir sıkıştırma formatı seçimi, kullanıma ve hedef kitleye büyük ölçüde bağlıdır.

  • .tar.gz ve tar.bz2 arşivleri Linux sistemlerinde kullanım için idealdir (ve Linux kullanıcıları ile dosya paylaşımı için ek olarak) çünkü tar, gzip ve bzip2 araçları platformda büyük oranda her yerde bulunur ve .tar formatının tam olması nedeniyle Unix izinleri ve platforma özgü diğer özellikler için destek. Katran arşivini sıkıştırmak için gzip ve bzip2 arasındaki seçim, sıkıştırma oranına karşı esas olarak bir karardır, bzip2 daha küçük dosyalar sunar ancak çok daha düşük sıkıştırma hızına sahiptir. Bu formatların dezavantajları, Windows ile daha az uyumluluk içermesidir ve (potansiyel) tek bir dosyayı çıkarmak için tüm arşivin sıkıştırılmasının kaldırılması gerekir.

  • ZIP arşivleri çoğu platformda yerel araçlar kullanılarak çıkarılabilir, bu nedenle teknik olmayan bir kullanıcıya 7-Zip gibi üçüncü taraf arşiv yazılımlarını kurmaktan rahatsız olacak bir arşiv göndermek için ideal bir seçimdir. Sıkıştırma seviyesi, daha gelişmiş algoritmalar kadar iyi değildir ve Unix izinlerini desteklemez, ancak örneğin büyükannenize tatil fotoğrafları arşivi göndermek istiyorsanız mükemmel bir formattır. ZIP ayrıca bazı temel parola koruması sağlar ve bir dosyayı arşivin herhangi bir yerinden hızla çıkarabilir.

  • 7-Zip, mümkün olan en iyi sıkıştırma oranlarını istiyorsanız iyidir. ZIP gibi, Unix dosya izinlerini veya sahipliğini desteklemez ve aynı zamanda varsayılan olarak yüklenmemesini sağlar, bu da kullanımı biraz daha fazla iş yapar, ancak sıkıştırma oranı önemliyse Windows'ta buna değer olabilir. Bütünüyle Linux ortamında, 'xz' veya 'lzma' sıkıştırma araçlarını tar ile birlikte kullanmak daha iyi olacaktır; -Zip.


2

Örnek olarak, bu durumlarda belirtilen formatları kullanıyorum:

  • Metin dosyaları (özellikle günlükleri): bz2
  • Dağıtılacak dosyaların toplanması (örneğin kaynak kodu): gz (tar.gz gerçekten).
  • Çeşitli dosyalar: 7zip. Neredeyse her şeyi çok verimli bir şekilde sıkıştırabilirim. Çapraz platform, açık kaynaklı, sağlam, hafif, dosya (başlık ve veri) şifrelemesi, ... Başka bir şey isteyebilir misiniz? :)

Ben RAR önlemek çoğu insan WinRAR deneme sürümünü indirebilir ve kullanmaya devam (tamamen ve bildiğim birinden RAR dosyasını aldığınızda, bunu propietary olduğundan bu biçimi kullanarak durdurmak için ona / onu söyle, ve muhtemelen o / o kullanıyor lisanssız yazılım sonsuza dek).

Not: Ubuntu (öncelikle) ve Windows (çift önyükleme ve VirtualBox) çalıştırıyorum.


1

Popüler araçlar bunları bir araya getirdiği için birbirine karıştıran en az dört ayrı iş vardır:

  1. Arşivleme: Mümkün olduğu kadar çok şeyi koruyarak birden fazla dosyayı (meta veriler dahil) tek bir dosyada birleştirme yeteneği. Linux / Unix dünyasında, arşivleme geleneksel olarak TAR dosya biçiminde yapılır.
  2. Sıkıştırma: İkili veri akışının boyutunu kayıpsız şekilde küçültme yeteneği. Linux / Unix dünyasında, bu geleneksel olarak GZip ve BZip2 tarafından yapılır.
  3. Şifreleme: Verileri tuşlarla karışma yeteneği
  4. Sağlama Toplamı: hataları algılama (ve muhtemelen düzeltme) yeteneği.

.Tar.gz ve .tar.bz'nin ubiquity özelliği, tek bir işi iyi yapan, her şeyi yapan tek bir araç üzerinden küçük aletlerin Unix felsefesine karşılık gelir. TAR dosya formatı sıkıştırma veya şifrelemeyi desteklemez, ancak herhangi bir kompresör tarafından daha fazla sıkıştırılabilir (.zip veya .z.7 gibi). GZip ve BZip2'nin işi basitçe bir dosya akışını başka bir dosya akışına sıkıştırmaktır, sıkıştırma katmanının meta verilerin veya şifrelemenin veya sağlama toplamının nasıl korunacağına dikkat etmesi gerekmez. Zaman içinde tar, bir kompresörle daha rahat çalışabilmesi için programda birkaç kısayol yapılmıştır .

Zip ve 7z dosya biçiminde, bu ayrı işler tek bir süper dosya biçiminde tek bir program tarafından yapılır.

Bunların tümü taşınabilir biçimler olsa bile, yukarıdaki eğilim neden beklemede görünüyor? Belirli bir platformda belirli bir arşiv formatı kullanmanın herhangi bir avantajı var mı?

Bu şekilde yapıldığı için, program kaynak kodları geleneksel olarak .tar.gz veya .bz2 şeklinde dağıtılır, çünkü dosya izinlerini, değişiklik zamanını vb. Korumak programlama için kullanılan çeşitli araçlar için önemlidir (örneğin, make).

Ayrı arşivleme ve sıkıştırma adımı yıllarca çok iyi çalıştı, arşivleme ve sıkıştırmayı serbestçe karıştırıp eşleştirebilme avantajına sahip ve dezavantajı (2 aşamalı bir sıkıştırma işlemi) daha akıllı araçlar geliştirerek kolayca önlenebilir ( En modern linux sıkıştırma programı doğrudan .tar.gz veya .bz2'ye sıkıştırılır, bu da ara adımı gizler.

Başka dosya biçimlerine geçmenin güçlü bir nedeni yoktur, yeni kompresörler geleneğin bozulmasını haklı çıkarmak için önemli ölçüde daha iyi bir sıkıştırma oranına sahip değildir ve katran her şeyi yeterince iyi koruyabilir.

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.