Windows için tekilleştirme de yapan bir sıkıştırma veya arşivleyici programı var mı? [kapalı]


12

Arşivlenen dosyalar üzerinde tekilleştirme (tekilleştirme) yapabilen bir arşivleyici programı arıyorum. Arşivin paketini açtıktan sonra, yazılım sıkıştırma işlemi sırasında kaldırdığı dosyaları geri koyacaktır.

Şimdiye kadar buldum:

Başka birinin farkında olan var mı?

Bu muhtemelen 7-zip için harika bir ek olacaktır.

Yanıtlar:


12

Hemen hemen tüm modern arşivciler tam olarak bunu yaparlar, tek fark buna "katı" bir arşiv olarak başvurmalarıdır, çünkü tüm dosyalar sıkıştırma algoritmasına beslenmeden önce tek bir akışa birleştirilir. Bu, her dosyayı birer birer sıkıştıran ve her sıkıştırılmış dosyayı arşive ekleyen standart zip sıkıştırmasından farklıdır.

7-zip doğası gereği etkili bir şekilde tekilleştirme sağlar. 7-Zip örneğin dosyaları arayacak, benzer dosya türlerine ve dosya adlarına göre sıralayacaktır ve böylece aynı tür ve veriye sahip iki dosya, kompresör algoritmalarına giden akışa yan yana yerleştirilecektir. Kompresör daha sonra son zamanlarda gördüğü çok fazla veri görecek ve bu iki dosya, dosyaları tek tek sıkıştırmaya kıyasla sıkıştırma verimliliğinde büyük bir artış görecektir.

Linux, ".tgz" biçimlerinin (veya tam biçimini kullanmak için ".tar.gz") yaygınlığıyla uzun zamandır benzer bir davranış gördü, çünkü katran tüm dosyaları tek bir akışta birleştiriyor ( dosyaları sıralama ve gruplandırma) ve ardından gzip ile sıkıştırma. Bu kaçırdığı şey, 7-zip'in yaptığı sıralamadır, bu da verimliliği biraz düşürebilir, ancak zip'in yaptığı gibi bir çok ayrı ayrı sıkıştırılmış dosyayı birlikte engellemekten çok daha iyidir .


her gün yeni bir şeyler öğren. Zip'in her dosyayı ayrı ayrı sıkıştırdığını fark etmedim ama bilgisayarımda birkaç test yaptıktan sonra gerçekten doğru olduğunuzu anladım. çok ilginç, teşekkürler!
CenterOrbit

7ip, tekilleştirme işleminin adil bir işini yapar, ancak yinelenmeyen verileri verimli bir şekilde sıkıştırmak için tasarlanmıştır ve bunu başarmak için çok fazla CPU ve bellek kullanır; bu da verileri tekilleştirmenin çok verimsiz bir yoludur. İki özdeş 100MB dosyasını sıkıştırırsanız, ilk dosyayı verimli bir şekilde sıkıştırmak ve sıkıştırmak çok zor olacaktır ve ancak o zaman (sözlük boyutu yeterince büyükse) ikinci dosyayı birincinin kopyası olarak sıkıştırın.
mwfearnley

.tar.gzBirbirinden tamamen bağımsız olarak sadece nispeten küçük blokları (900KB gibi) sıkıştırmakla gzip yapmaz ve böylece iki büyük ama aynı dosyayı (örneğin, birkaç 4MB görüntü) tekilleştirme yeteneğine sahip olmaz mı?
binki

Örneğin, 7z büyük dosyalar arasında tekilleştirebildi, ancak gzip değildi: gist.github.com/binki/4cf98fb4f1f4aa98ee4a00edaf6048fa
binki

ilginç bir yaklaşım dosyaları 'git add', sonra .git klasörünü sıkıştırmaktır
beenotung

4

Tekilleştirme işlemini bir sıkıştırma işlemiyle kullanmanın bir anlamı yoktur. Çoğu sıkıştırma algoritması, en yaygın veya yeniden kullanılan veri parçalarını arayacak 'sözlük' olarak adlandırılan şeyi oluşturur. oradan sadece "kelimeyi" tekrar yazmak yerine sözlük girişine atıfta bulunacaktır. Bu şekilde, çoğu sıkıştırma işlemi zaten tüm dosyalardan gereksiz veya yinelenen verileri keser.

Örneğin, 1 MB'lık bir dosya alıp her seferinde farklı bir adla 100 kez kopyalarsanız (toplam 100 MB disk alanı), 7zip veya zip dosyasında sıkıştırırsanız, 1 MB'lık bir toplam zip dosyanız olacaktır. Bunun nedeni, tüm verilerinizin bir sözlük girişine konması ve 100 kez referans almasıdır, bu da çok az yer kaplar.

Bu, ne olduğuna dair çok basit bir açıklamadır, ancak nokta hala iyi bir şekilde iletilmektedir.


1
Sözlük boyutu çoğu sıkıştırma arşivi için çok sınırlı olduğundan, günlük kullanımda geçerli değildir. Bunu 50 MB'lık dosyalarla deneyin ve sıkıştırılmış boyutunuz iki özdeş giriş dosyasıyla iki katına çıkacaktır.
Chaos_99

1
Zip dosyaları, 7zip dosyalarının aksine, dosyalar arasında tekilleştirmeyi desteklemez. Zip dosyaları her dosyayı ayrı ayrı sıkıştırır ve saklar, böylece yinelenen dosyalar arşivde birden çok kez saklanır.
mwfearnley

1
7zip dosyalar arasında tekilleştirmeyi desteklese de, çok daha kısa eşleşmeleri bulmak ve sıkıştırmak için tasarlanmıştır. Algoritmaları, büyük ölçekli veri çoğaltması bulmak için tasarlanmış bir şey için potansiyel olarak mümkün olandan çok daha yavaş ve bellek yoğun.
mwfearnley

4

7-Zip, zip, gzip ve diğer tüm arşivleyiciler, aynı dosyanın içinde ya da farklı dosyaların içindeki farklı konumlara yerleştirilen, sadece birkaç megabayt ya da daha fazla gibi birbirinden uzak olan aynı alanları algılamaz.

Bu nedenle, hayır, normal arşivleyiciler bazı durumlarda exdupe ve diğerlerini iyi performans göstermez. Bazı sanal makineleri veya diğer şeyleri sıkıştırırsanız bunu görebilirsiniz.


1
Doğru. Benzersiz veri hacmi kompresörlerin sözlük boyutunu aşar aşmaz sıkıştırma azalır. exdupe büyük veri hacimleri için üstün performans sunar.
usr
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.