Paralel bir dosya arşivleyicisi var mı (tar gibi)?


40

Dosyaların paralel arşivlenmesi için bir şey var mı?

Tar harika, ama bant arşivleri kullanmıyorum ve smp'ye sahip olduğum için arşivlemenin hızlı bir şekilde (bzip2 gibi sıkıştırma ile) gerçekleşmesi benim için daha önemli.


7
tar sadece kasetlerden daha fazlası içindir. Adı başlangıçta kasetten geliyordu, ama bugünlerde çoğunlukla isteğe bağlı sıkıştırma ile dizin yapısı bilgilerini korurken, yeniden dağıtım için bir şeyi tek bir dosyaya koymak istediğinizde kullanıldığını görüyorum.
Kevin M,

Burada kıyaslanan çok sayıda paralel sıkıştırma aracı var, vbtechsupport.com/1614 , tar
p4guru 'nun

Verilen cevabın hiçbiri (kabul edilenler dahil) dizinleri , söyleyebileceğim kadarıyla - dosyaları ele alırlar . Yalnızca zipdizinleri kullanabildiğimi görüyorum : |
warren

1
Aslında ne genellikle yaptığımız paketlemek için dizinleri de tararşivlerin ve sonra (böyle bir dosya kompresör kullanarak paketi sıkıştırmak gzip, pigzvs.). Standart giriş / çıkıştan veri akışları üzerinde çalışabileceği için bunu iki adımda, aynı zamanda tek bir adımda yapabilirsiniz. Sonuçlar çok benzer zip, ancak daha çok yönlü.
gerlos,

Yanıtlar:


36

Pbzip2'yi aradığınızı düşünüyorum:

PBZIP2, SMP makinelerinde pthreads kullanan ve doğrusalya yakın hızlanma sağlayan bzip2 blok sıralama dosya kompresörünün paralel bir uygulamasıdır.

Proje ana sayfasına bir göz atın veya en sevdiğiniz paket havuzunu kontrol edin.


1
Ayrıca deneyebilirsiniz pigzve pxzparalel uygulamaları için gzipve xz. Sen gibi bir komutu kullanarak sıkıştırabilir tar c dir | pigz -c > dir.tar.gzve kullanma kaldırmakta pigz -cd dir.tar.gz | tar xf -.
gerlos

3
Komutlar bugün olur tar -cf dir.tar.gz -I pigz dirve tar -xf dir.tar.gz -I pigz. Ayrıca xzdişli: kullanım XZ_OPT=-T0 tar -cJf dir.tar.gz dirve XZ_OPT=-T0 tar -xJf dir.tar.gz.
Zengin

21

7zip , -mmtbayrak verildiğinde birden fazla iş parçacığı üzerinde çalışabilir , ancak yalnızca büyük sıkıştırma sunan, ancak genellikle arşiv oluşturmak için zip'ten daha yavaş olan 7z arşivlerine sıkıştırırken çalıştırılabilir. Böyle bir şey yapın:

7z a -mmt foo.7z /opt/myhugefile.dat

Şekil 7z, sıkıştırma oranı ve sıkıştırma / açma süresi, rastgele erişim ve daha iyi sıkıştırma arasındaki değişimlerin kontrolü ve benzeri işlemler için iyi desteği olan hoş bir arşivleyicidir. Bununla birlikte, neredeyse tar gibi meta veriler depolamaz, sahip / izinlerini kaybedersiniz.
Peter Cordes

Görünüşe göre bu seçenekler varsayılan olarak açık - en azından bununla performans artışı yok ve 7z 'çıktısı her iki durumda da CPU çekirdeğimin çekirdeği ile ilgili bir çizgi oluşturuyor.
Andrey Starodubtsev

14

OP, paralel sıkıştırma değil, paralel arşivlemeyi istedi.

Kaynak malzeme, farklı dizinlerin / dosyaların farklı disklerde olabileceği bir dosya sisteminden geliyorsa veya sıkıştırma araçlarının giriş hızını aşan tek bir hızlı diskten geliyorsa, gerçekten çok sayıda girdi akışına sahip olmak yararlı olabilir. sıkıştırma katmanlarına gidiyorum.

Anlamlı bir soru ortaya çıkıyor, paralel bir arşivden elde edilen çıktılar neye benziyor? Artık sadece tek bir dosya tanımlayıcısı / değil stdout, iş parçacığı başına bir dosya tanımlayıcısı.

Şimdiye kadar buna bir örnek Postgresql'in paralel boşaltma modu olup pg_dump, burada bir dizine döküldü, yedeklenecek tablo kümesi üzerinde çalışan iş parçacıkları (sırayı tüketen çok sayıda iş parçacığı w).

Ana akım olan gerçek paralel arşivlerden emin değilim. Solaris Tar'ın ZFS'de kullanılması için bir kesmek vardı: http://www.maier-komor.de/mtwrite.html

Birden fazla iş parçacığını başarıyla çalıştıran bazı özel yedekleme araçları vardır, ancak iş yükünü yalnızca dizine göre yüksek bir düzeyde bölen çok daha fazlası vardır.


11
tar --use-compress-program=pigz  ....

pigzEn sevdiğiniz paralel sıkıştırma programı ile değiştirin . Kullanım nedeni tar, sahibi, grubu, izinleri depolayabilmesidir. Bu meta veriler genellikle yararlıdır (örneğin, karmaşık bir sistemde bir dir ağacını geri yükleme).


4
tar -c --use-compress-program = pigz -f myDirectory.tar.gz myDirectory /
markusN 28:15

1
Tüm seçenekler, AFAIK, katran ile -Iaynı olan seçenekle birlikte normal olarak kullanılabilir --use-compress-program. Yani, mesela tar cvzf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo...."kullanılarak çok kanallı seçeneği uygulanabilir pigzolarak tar -I pigz -cvf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo...". Bu en iyi, en uygun cevap, IMHO. Teşekkürler @ uDude! :)
ILMostro_7

10

pigz , gzip'in paralel bir uygulamasıdır, ancak sıkıştırma için değil, yalnızca sıkıştırma için birden çok işlemci kullanabilir.


2
Bazı deneyler yaptım ve pigzgerçekte açma işlemi sırasında da çoklu iş parçacıkları kullanabiliyor gibi görünüyor . time tar xf dir.tar.gzVe arasındaki çıktısını karşılaştırmayı deneyin time pigz -cd dir.tar.gz | tar xf -(4 çekirdekli işlemcimde bu sürenin yarısından biraz az sürüyor).
gerlos

4
@gerlos timeBir boru hattında kullanmak sadece ilk komutu zamanlayacaktır . Kaynaktan pigzbelgeleri . "Basınç Sonuç olarak, pigz dekompresyon için tek bir iplik (ana dişli) kullanan en az değildir, bu amaç için özel olarak hazırlanmış Sıkıştırılmalı akışları olmadan, paralel değildir, ancak okuma için üç mesajları oluşturur, bazı durumlarda dekompresyon işlemini hızlandırabilen yazım ve hesaplamayı kontrol edin. ”
augurar

1
Ayrıca pixz var .
Marc.2377

8

tarsadece dosyaları tam olarak kopyalamakta ve dizin ağacını ve orijinal dosya özniteliklerini korumakta çok iyi bir arşiv biçimidir. TAR yedeklemeler için çok iyidir, çünkü her şey korunur. Kullandığım pbzip2çok iyi sonuçlar ile sistem yedekleme için kullanmak katran arşivleri sıkıştırmak için.

bu komut hile yapmalı.

tar -cpS "infile" | pbzip2 > "outfile"

pbzip2 farklı bir sıkıştırma aracıyla değiştirilebilir, ancak uyarılmalıdır, LZMA sıkıştırması (pxz gibi) büyük dosyaları sıkıştırırken / açarken bir TON RAM kullanır (8GB RAM ile 8 iş parçacığı çalıştırmayı denedim ve pxz diske geçmeye başladı).



1

Sıkıştırma dikkate alındığında, xzyaklaşık sürüm 5.2, -Tseçenek aracılığıyla paralel sıkıştırmayı desteklediğinden .

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.