Çok sayıda dosya için en hızlı sıkıştırma yöntemi nedir?


14

Toplam yaklaşık 100 GB tutarında yaklaşık 350.000 oldukça küçük dosyaları olan bir dizini sıkıştırmak gerekiyor. OSX kullanıyorum ve şu anda bu dizini bir .zip dosyasına dönüştüren standart "Sıkıştır" aracını kullanıyorum. Bunu yapmanın daha hızlı bir yolu var mı?


Muhtemelen katranı yenemezsiniz, çünkü gerçekten sıkıştırmayan, sadece arşivleme, bunu etkinleştiren belirli seçenekler olmadan. Cevaplarda kanıtı görmek istemiyorum, görüş yok ...
Daniel Beck

1
Ne kadar sıkıştırma istediğinize bağlıdır.
ta.speot.is

1
Katran kullanmayı bitirdim ve hız nedenleriyle henüz sıkıştırmayı denemedim. İhtiyacım olan şey için zamanında tamamlayabildi. Teşekkürler!
Spike

@DanielBeck, tar ile ilgili sorun dizin ağacını göstermemeleri. Bu yüzden bir "görüş" elde etmek için tüm katranı açmamız gerekiyor. Dizin görünümünü gösteren katran için alternatifler var mı?
Pacerier

Yanıtlar:


15

Dizinler tariçin bzip2maksimum sıkıştırma ile bir piped kullanın .

basit bir yol,

tar cfj archive.tar.bz2 arşivlenecek dizin / 

Bu, küçük dosya kümelerini arşivden
çıkarmak istemiyorsanız ve gerektiğinde / her yerde her şeyi çıkarmayı planlıyorsanız harika çalışır .
Oysa eğer yapmak onun çok kötü, dosyaların küçük bir dizi çıkmak istiyorum.

Bu tür arşivleri aramayı filename.tar.bz2ve ' xfj' seçeneğiyle çıkarmayı tercih ederim .

Maksimum sıkıştırma borusu şöyle görünür,

tar cf - arşivlenecek dir / | bzip2 -9 -> arşiv.tar.bz2  
# ^ buradan arşiv dosyasını zip-in ^ içine tarball boru. 

Not: ' bzip2' yöntemi ve daha fazla sıkıştırma, normalden gzip' tar cfz' daha yavaş olma eğilimindedir .

Hızlı bir ağınız varsa ve arşiv farklı bir makineye yerleştirilecekse
, ağdaki bir boru ile hızlandırabilirsiniz (iki makineyi birlikte etkin bir şekilde kullanarak).

tar cf - dir / | ssh kullanıcı @ sunucusu "bzip2 -9 -> /target-path/archive.tar.bz2"  
# ^ ağ üzerinden boru tarball zip ^ ve uzak makinede arşivlemek için.

Bazı referanslar,

  1. Linux Journal: Sıkıştırma Araçları Karşılaştırıldı , 28 Tem 2005
  2. gzip vs. bzip2 , 26 Ağu 2003
  3. Hızlı Karşılaştırma: Gzip vs. Bzip2 vs. LZMA , 31 Mayıs 2005

2
Soru soran en hızlı yöntemi sordu, 100 GB'lık bir ziftin kullanılması ömür boyu sürecek! Disk alanının o kadar ucuz olduğu bir nokta geliyor ki, gereksiz her son yedek parçayı sıkıştırmak için aeonları almak, kesinlikle gerekli olmadıkça, anlamsız bir kaynak israfıdır. Boş alandaki disk kullanımının çoğuyla, katranı -1 ile gziplemek muhtemelen işi yeterince iyi yapar ve birkaç ay önce bir sonraki göreve geçmeye izin verir!
Andy Lee Robinson

100GB'lık bir dosyanın toplamda sıkıştırmaya değmeyeceğini kabul etsem de, bzip2'nin 100GB için 1GB'ye kıyasla doğrusal olarak daha fazla zaman alacağını düşünmüyorum (diyelim). Her iki yolu da göstermek için bazı teori veya verileri görmek isterim.
nik

Bzip2'nin sözlüğünün uyarlanabilir olduğunu anlıyorum, bu nedenle sürekli olarak dosyanın sonuna kadar arama penceresinde yeni yedekler arıyor. Dosyanın entropisinin homojenliğine bağlı olarak, nispeten doğrusal olmalıdır. Geri kalanını hızlı bir şekilde sıkıştırabilmek için dosyanın başlangıcından itibaren gereken her şeye sahip olduğunu kabul eden kötü bir kompresör olurdu, ancak bazı durumlarda, eski olmak için çalışmaktan daha iyi yollar olsa da gerekli olan her şey olabilir 100GB veri kümeleriyle ampirik olarak dışarı çıkın!
Andy Lee Robinson

7

Bu adam bu konuda biraz araştırma yaptı. Görünüşe göre .zip daha büyük dosyaları daha hızlı sıkıştıracaktır. Bununla birlikte, en büyük sıkıştırma boyutlarından birini verir. Ayrıca Windows yardımcı programlarını kullanıyor gibi görünüyor, ancak bahse giriyorum OSX'in yardımcı programı neredeyse optimize edilmiştir.

İşte birçok dosyada hız için sayısız sıkıştırma yardımcı programının karşılaştırıldığı mükemmel bir web sitesi. Bu sitede, sizin için en iyi yardımcı programı belirlemek için bakabileceğiniz birçok test var.

Hızın çoğu kullandığınız programla ilgilidir. 7zip'in Windows yardımcı programını kullandım ve çok hızlı buldum. Ancak, birçok dosyayı sıkıştırmak ne olursa olsun çok uzun sürüyor, bu yüzden sadece bir gecede izin verirdim. Ya da sadece her şeyi katlayabilir ve sıkıştıramazsınız ... Şahsen büyük arşivleri açmaktan nefret ederim, bu yüzden yapmak istediğiniz şeyse dikkatli olurum.


0

Kullanmayı tercih ederim

tar cf - dir-to-be-archived/ | bzip2 -9 - > archive.tar.bz2

dosyaları başka bir sunucuya taşımak ve aynı anda kapatmak için


1
Hangi @nik tarafından üst yanıtta önerilmektedir. Vurgu için çoğaltmaya gerek yok, sadece önemli bir şey varsa, ancak ilgili bir cevap vermek istemiyorsanız, diğer cevabı kaldırın veya yorum ekleyin. ; o)
pbhj
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.