En iyi sıkıştırma yöntemi?


53

16GB'lık bir klasörü sıkıştırmak istiyorum, fakat en iyi yöntem nedir? tar.gz? tar.bz2 rar? 7z? Bir yöntemde ilk önce sıkıştırılmış, sonra sıkıştırılmış arşivi yeni bir klasöre kopyalayıp daha sonra başka bir yöntemle yeniden sıkıştırılmış olsaydım arşiv daha küçük olur mu? Bir DVD'ye sığdırmam gerekiyor (çıktı belki 8,5 GB, hatırlamıyorum) ancak "4370 MB" koymak, sıkıştırılmış dosyanın 2,5 GB boyutunda olmasını sağlıyor.

BTW, Ubuntu'da varsayılan sıkıştırma yöntemi nedir?

Yanıtlar:


70

Varsayılan gz. 7zOlsa da en iyi sonuçları .

1.4 Gb sanal kutu konteyner için sonuçlar:

görüntü tanımını buraya girin

En iyi sıkıştırma - MB cinsinden boyut:

7z 493
rar 523
bz2 592
lzh 607
gz 614
Z 614
614
.arj 615
lzo 737
hayvanat bahçesi 890

Kaynak

görüntü tanımını buraya girin

Yüklemek

 sudo apt-get install p7zip-full

Teşekkürler, ben zaten Software Center ile 7z ve rar kurdum. 7z ile deneyeceğim.
Amanda,

1
Bu sonuçlar nereden geliyor? Her algoritma için, sıkıştırma oranı ve hız, sıkıştırmaya çalıştığınız şeye çok bağlıdır. Gelen verileri sıkıştırmayı deneyin /dev/urandom: her denemede farklı sonuçlar alırsınız. Veya deneyin /dev/zero: bzip2 kazanır (oran için).
Andrea Corbellini

1
@AndreaCorbellini bağlantı cevapta, bu yüzden tıklayın !? ve dediğim gibi: 1.4 sanal kutuya dayanıyor. Sıkıştırmanın hangi dosyalara bağlı olduğunu ancak birkaç yıllık bir deneyime göre, 7z sahip olduğum dosyalar için daha iyi göründüğünü (çoğunlukla yazılım ve ikili veri dosyaları)
Rinzwind

1
@ Rinzwind: Gerçekten özür dilerim, Kaynak bağlantısını görmedim .
Andrea Corbellini

1
@AndreaCorbellini sorun değil;) umarım Amanda sonuçları geri bildirir: +
Rinzwind

14

Bu soru çok eski, ama belki birileri bu çözümü faydalı buluyor:

Kullandıktan rzipsonra tar. İlk önce bir sözlük yöntemi kullanarak 900 MB büyük veri bloğunu sıkıştırır ve daha sonra temizlenen verileri üzerine verir bzip2. Diğer güçlü sıkıştırma araçlarından ( bzip2, lzma) ve sıkıştırdığı bazı dosyalardan bzip2veya daha iyi olduğundan daha hızlıdır lzma.

Evet, gzLinux'taki varsayılan sıkıştırma aracıdır. Hızlıdır ve yaşına rağmen kaynak kod gibi metin dosyalarını sıkıştırarak hala çok iyi sonuçlar verir. Diğer bir standart araç bzip2ise daha yavaş olmasına rağmen.

Ekleme: lrzip daha yeni ve rzip ilkesini genişletiyor. Sınırsız blok boyutlarını ve çeşitli sıkıştırma yöntemlerini (LZMA, Bzip2, Gzip, LZO, ZPAQ veya hiçbiri) bile destekler. LZMA standarttır. Yedekleme veya diğer Linux / BSD kullanıcılarıyla çok fazla veri paylaşıyorsanız, gerçekten kullanışlı olabilir.


Sanırım 900 kB blok mu demek istedin? 900 MB biraz daha büyük olurdu ...
Byte Commander

1
Aslında 900 MB. Bkz en.wikipedia.org/wiki/Rzip
user258532

2

A'yı seçiyorum LZMA. En küçük bayt ek yüke sahiptir ve güçlü sıkıştırma oranına sahiptir. ZIP ve LZMA arasındaki karşılaştırma: seq.txtPHP koduyla iki dosya oluşturdum

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[$i%10].($i%10==9 ? "\n":""); file_put_contents('seq.txt', $str);

0..9 hane tekrarlayan blokları tutar ~ 1 MB veri ve rnd.txtPHP kodu ile

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[rand(0,9)].($i%10==9 ? "\n":""); file_put_contents('rnd.txt', $str);

0..9 hane rasgele blokları tutar ~ 1 Mb veri.

Sıkıştırma sonuçları:

  • seq.txt, rnd.txt - 1100000 bayt
  • seq.txt.zip - 2502 bayt
  • rnd.txt.zip - 515957 bayt
  • seq.txt.lzma - 257 bayt
  • rnd.txt.lzma - 484939 bayt

Sıkıştırma oranı:

  • ZIP -> "seq.txt" ->% 99.772
  • ZIP -> "rnd.txt" ->% 53.094
  • LZMA -> "seq.txt" ->% 99.976
  • LZMA -> "rnd.txt" ->% 55.914

Bu nedenle LZMA, sıralı verileri ZIP'den% 0.2 daha etkili
ve rasgele verileri ZIP'den% 2.8 daha etkili bir şekilde sıkıştırmıştır .

Elbette LZMA kazanıyor!

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.