En hızlı yol birçok dosyayı bir araya getirir (tar czf çok yavaş)


23

Şu anda tar czfyedek dosyaları birleştirmek için çalışıyorum . Dosyalar belirli bir dizinde.

Ancak dosya sayısı artıyor. Kullanımı tzr czfçok fazla zaman alır (20 dakikadan fazla ve sayma).

Dosyaları daha hızlı ve ölçeklenebilir bir şekilde birleştirmem gerekiyor.

Bulduğum genisoimage, readomve mkisofs. Ancak hangisinin en hızlı olduğunu ve bunların her biri için sınırlamaların ne olduğunu bilmiyorum.


tarÖnemli bir ek yük getirdiğine şüpheliyim , dosyaları okumak burada pahalı bir işlemdir. Dosyalarınızın saklanma şeklini değiştirmeli ya da çok farklı bir yaklaşım kullanmalısınız (dosya sistemini bir bütün olarak kopyalayın). Dosyalarınızın nasıl organize edildiğini bilmeden size çok yardımcı olamayız.
Gilles 'SO- kötülük' dur '21

5
FS'nizi "noatime" seçeneğiyle monte edin, belki IO işlemlerini hızlandırın.
Rufo El Magufo

2
Öğlen için +1, gerçekten önemli bir fark yaratıyor. Özellikle normal sabit diskler için ve ayrıca sadece gereksiz yazmaları azaltmak için.
JM Becker

Yanıtlar:


25

Zamanınızın çoğunun CPU'da mı yoksa G / Ç'de mi harcandığını kontrol etmelisiniz. Her iki durumda da, onu geliştirmek için yollar vardır:

A: sıkıştırmayın

Sen böylece argümanlar listeden "z" bırakarak deneyin gereksinimleri listenizde "sıkıştırma" söz etmedi: tar cf. Bu işleri biraz hızlandırmak olabilir.

Daha önce yedeklemiş olduğunuz dosyaları atlamak için "-N" kullanmak gibi işlemi hızlandırmak için başka teknikler de var.

B: tüm bölümü dd ile yedekle

Alternatif olarak, bölümün tamamını yedekliyorsanız, bunun yerine tüm disk görüntüsünün bir kopyasını alın. Bu işlemden tasarruf etmenizi ve bir çok disk başı zaman kazanmanızı sağlar. tarve daha yüksek bir seviyede çalışan diğer programların, dosya içeriğinin nerede olduğunu bulmak ve daha fazla kafa diski araması yapmak için dizin girişlerini ve düğümlerini okumak ve işlemek zorunda kalması ve her bir dosyayı diskten farklı bir yerden okuması gerekir.

Temel verileri daha hızlı yedeklemek için aşağıdakileri kullanın:

dd bs=16M if=/dev/sda1 of=/another/filesystem

(Bu, RAID kullanmadığınızı ve bu durumun biraz değişebileceğini varsayar)


2
Sıkıştırmayın : pigzSistemde birden fazla işlemci varsa, kullanmayın .
Rufo El Magufo

LZ4 / zstd ve benzer şekilde hızlı sıkıştırma algoritmaları, bir işlemi yalnızca daha az veri yazarak (eğer hiç sıkıştırılabilirlerse) sıkıştırma sırasına göre daha hızlı fakat daha az verimli olacak şekilde sırayla hızlandırabilirlerse kontrol etmeye değer olabilirler. seviye ve algoritma, aynı zamanda man gzip "Varsayılan sıkıştırma seviyesi -6" diyor, bu yüzden iyileştirme için yer var.
LiveWireBT

8

Başkalarının söylediklerini tekrarlamak için: yedeklenen dosyalar hakkında daha fazla bilgi sahibi olmamız gerekir. Burada bazı varsayımlarla gideceğim.

Tar dosyasına ekle

Dosyalar yalnızca dizinlere ekleniyorsa (yani, hiçbir dosya silinmiyorsa), her zaman yeniden oluşturmak yerine varolan tar dosyasına eklediğinizden emin olun. Bunu, mevcut arşiv dosya adını tarkomutunuzda yenisi yerine (veya eskisini silerek) belirterek yapabilirsiniz .

Farklı bir diske yaz

Yazdığınız aynı diskten okumak, performansı düşürüyor olabilir. G / Ç yükünü yaymak için farklı bir diske yazmayı deneyin. Arşiv dosyasının orijinal dosyalarla aynı diskte olması gerekiyorsa, daha sonra taşıyın.

Sıkıştırmayın

Sadece @Yves dediklerini tekrar ediyorum. Yedek dosyalarınız zaten sıkıştırılmışsa, tekrar sıkıştırmaya gerek yoktur. Sadece CPU çevrimlerini boşa harcarsın.


4

Gibi katran lz4 crompression ile tar kullanarak

tar cvf - myFolder | lz4 > myFolder.tar.lz4

size her iki dünyanın da en iyisini verir (oldukça iyi sıkıştırma VE hız). Verileriniz ikili dosyalar içeriyor olsa bile yaklaşık 3 sıkıştırma oranı bekleyin.

Daha fazla okuma: sıkıştırma algoritmalarının karşılaştırılması lz4 ile katran


1
StefanQ'da kalan şey, darboğazınızın nerede olduğuna bağlı olarak kompresörünüzü seçmeniz gerektiğidir. Ayrıca: çıktıyı farklı bir fiziksel depolama aygıtına veya hatta uzak bir makineye kaydedebileceğinizi unutmayın!
Lester Cheung,

2

Kimsenin terk edip geri yüklemekten bahsetmemesine şaşırdım. Dosya sisteminde boş yer varsa , dd'den çok daha hızlı olacaktır .

Söz konusu dosya sistemine bağlı olarak farklı araçlara ihtiyaç duyabileceğinizi unutmayın:

  • ext2 / 3/4 - dökümü ve geri (paket dökümü RH / Debian'daki)
  • XFS - xfsdump ve xfsrestore ( RH / Debian'da xfsdump paketi )
  • ZFS - zfs göndermek ve zfs recv
  • BTRFS - btrfs gönderir ve btrfs alır

Bazı programlarda dahili sıkıştırma (boşaltma hariç) seçeneğinin bulunmadığına dikkat edin - gerektiği gibi pigd kullanmak ve domuz kullanmak için boru. ;-)

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.