Rsync ile -z sıkıştırma seçeneği yedekleme işlemini hızlandırır mı


37

In rsync, -ztransfer sırasında dosya verilerini sıkıştıracak.

Doğru anlarsam, -zdosyaları aktarmadan önce sıkıştırın ve aktardıktan sonra sıkıştırın. Sıkıştırma nedeniyle aktarma sırasında süre azaltıyor mu, sıkıştırma ve açma süresinin üstünde mi?

Sorunun cevabı usb (2.0 veya 3.0) aracılığıyla harici bir hdd'ye veya internet üzerinden ssh ile sunucuya yedekleme yapmamda mı olur?


Ayrıca, sıkıştırılmış dosyanın orijinal dosyadan boyut olarak çok farklı olmaması durumunda, bunun çok büyük bir masraf olabileceğini unutmayın.
heemayl

1
Heemayl'in söylediklerini daha ayrıntılı olarak anlatmak için, eğer içerik büyük ölçüde sıkıştırılmış bir formatta (jpeg, mpeg, distro paketleri, vb.) Olan materyal ise, sıkıştırma daha az etkilidir. Ben fark man rsyncdosya son ekler listesi aslında olduğu sıkıştırılmayacaktır bile -z(bkz --skip-compress).
goldilock

Yanıtlar:


46

Bu genel bir soru. Uç noktalardaki sıkıştırma ve açma, bir bağlantının etkili bant genişliğini arttırır mı?

Uç noktalarda sıkıştırma ve açma işlemi yapan bir bağlantının etkili (algılanan) bant genişliği aşağıdakilerin bir işlevidir:

  1. ne kadar hızlı sıkıştırabilir (CPU hızınız)
  2. ağınızın gerçek bant genişliği

İşlev, kendi durumunuza danışmak isteyebileceğiniz bu 3B grafikte açıklanmıştır:

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

Grafik , http://www.linuxjournal.com/ tarafından hazırlanan Sıkıştırma Araçları ile Karşılaştırılmış 2005 makalesinden kaynaklanmaktadır .


1
Veri türünüz de önemli bir faktördür (listede 3 numaralı faktör eksik). Bağlantılı ürün tipik bir veri karışımı kullanır. Seninki tipik olmayabilir. % 100 ZIP dosyalarını (veya önceden sıkıştırılmış verileri) senkronize ediyorsanız, muhtemelen sıkıştırma yapmak istemezsiniz. % 100 metin dosyalarını senkronize ediyorsanız, ağınız hızlı olsa ve CPU'nuz yavaş olsa bile sıkıştırmanız daha hızlı olabilir. 3 faktörü de tartın.
Richard Brightwell

13

Çok yavaş bir bağlantınız varsa (GPRS'i düşünün), kesinlikle verilerinizi olabildiğince sıkıştırmak istiyorsunuz, aksi halde bağlantınız işleri yavaşlatır.

Çok yavaş bir CPU'nuza ve hızlı bir bağlantıya (yerleşik bir ağ cihazı gibi) sahipseniz, genellikle verilerinizi sıkıştırmak istemezsiniz, aksi takdirde CPU'nuz işleri yavaşlatır.


3

Verilerinizin ne kadar sıkıştırılabilir olduğuna ve kaynak ve hedefinizin işlem gücüne bağlıdır. Tecrübelerime göre tam bir disk yedeklemesi orijinal boyutunun yaklaşık% 30-50'sine sıkıştıracağından, bir çekim yapmaya değebilir. Aksi takdirde, sıkıştırma ile uğraşmayın. Sıkıştırma oranınızı sınamak pigz -c <your file> | wc -cve döndürülen boyutu orijinal boyutunuzla karşılaştırmak faydalı olabilir.


2

Evet, bağlantının hızı işlerin hızlanıp hızlanmadığını belirler. Diskler veriyi değil veriyi yazan süreci şişirdiği için sadece USB yedeklemesi için ek yük olacaktır. Bu yüzden onu okuyan ve indiren aynı makine de şişirmek ve yazmak zorundadır. Rsync hala iki işlem olduğunu düşünüyorum ama verileri bir işlemden diğerine veri aktarmak için hafızanız yeteri kadar hızlı ve işlemci daha fazla zamana ihtiyaç duyar (bunu daha sonra teslim edecek aynı belleğe okurken :).

Sıkıştırma yalnızca bir gönderen ve bir alıcı rsync olduğunda ve bunların arasında biraz daha yavaş bir ağınız olduğunda yardımcı olur. Örneğin yerel bir NAS'ınız olduğunda 1Gbit zaten yeterince hızlı olabilir, 10Gbit zaten ham SATA hızındadır. Bu nedenle, sıkıştırma yalnızca 100Mbit veya daha az bağlantınız olduğunda gereklidir ve yalnızca sıkıştırılmış verilerin sıkıştırılabilir olduğu durumlarda mantıklı olur.

Rsync'in iki makinede çalışmadığını ancak bir tanesinde çalıştığını ve sıkıştırma işlemini atladığını ancak emin olmadığını düşünüyorum.


1

tl; dr Yavaş transfer bağlantıları bittiğinde sıkıştırın, aksi takdirde yapmayın. Aşağıda bir sıkıştırma hızı testi, bir bant genişliği dönüştürme aracına bir bağlantı ve bazı bilgiler bulunmaktadır.

Sıkıştırma rsynckullanımı yalnızca ara bağlantı "yeterince yavaş" olduğunda, yani bir uçtaki makine iletişim bağlantısını doyurmaya yetecek kadar hızlı bir sıkıştırılmış veri akışı üretebiliyorsa, işleri hızlandırır.

Peki, herhangi bir şey elde etmek için sıkıştırmayı kullanmam gereken en yavaş bağlantı nedir?

Aşağıdakiler, ne kadar çabuk gzipveri üretebildiğini ve genel olarak ağ toplu transferlerinizi sıkıştırıp sıkıştırmamanız için ne anlama geldiğini gösteren bilimsel olmayan bir testtir .

Giriş verileri testin sonucunu büyük ölçüde değiştirecektir . Bilgisayarımda, genellikle ağlar üzerinden aktardığım veri türünü temsil eden sıkıştırılmamış (!) Normal bir dosya kullanıyorum. Kullanmak /dev/zero(sınırsız sıfır üretme) yanıltıcı olacaktır, çünkü bir sıfır akımı sıkıştırmak çok kolay /dev/randomolacaktır ve kullanım bunun tersi sebeplerden dolayı yanıltıcı olacaktır. Bunun yerine $HOME/localdizine, tarıma yüklediğim yazılımı içeren tar dosyasını kullanıyorum $HOME. Dosya kendi içinde sıkıştırılmamış, ancak ikili dosyalar, küçük sıkıştırılmış dosyalar ve kaynak / metin dosyalarından oluşan bir karışım içeriyor ve gzip64 MiB - 22 MiB arasında% 67 oranında küçüleceği varsayılan ayar ile sıkıştırırdım .

$ gzip -c local.tar | dd of=/dev/null
43092+4 records in
43093+1 records out
22063854 bytes transferred in 2.819 secs (7825741 bytes/sec)

Bunu ortalamanın ne olabileceği hakkında bir fikir edinmek için birkaç kez yapıyorum ve bu da yaklaşık 7800000 bayt / sn.

Sonra bunun neye dönüştüğünü görmek için bir ağ bant genişliği hesaplayıcısı kullanıyorum. Bu özel durumda, "100Mb Ethernet" kablolu bağlantısının hemen altında, "VDSL İndirme" internet bağlantısından sadece daha hızlı, "802.11 [a / g]" kablosuz bağlantısından biraz daha hızlı ve bir yerlerde "Bluetooth v3.0" (daha yavaş) ve "USB 2.0" (daha hızlı) arasında.

Bu, eğer bundan daha hızlı bir şey üzerinde sıkıştırma kullanıyorsam , sıkıştırma muhtemelen dosya aktarımını yavaşlatır .

rsynckullanarak olmayabilir tam olarak aynı kitaplıkları gzipsıkıştırma yapmak, ancak yukarıda en azından size bir ipucu biraz verecekti.

rsyncbildiğiniz gibi sıkıştırma işleminden daha fazlasını yapar ve gerçek hız artışı yalnızca değişen [bit] dosyaların aktarılmasından gelir.

Kendi tecrübelerime rsyncgöre, ağların bant genişliği arttığında (bulunduğum yerde) son 10 yılda sıkıştırma ile kullanımı son 10 yılda daha az ve daha az faydalı hale geldi.

Artımlı yedekleme yapmak için --link-destseçeneği kesinlikle araştırmanızı tavsiye ederim (bunun aktarılanlarla, yalnızca hedeflerin nasıl depolandığı ile ilgisi yoktur). Ayrıca, SSH üzerinden yapıyorsanız, SSH bağlantınız zaten sıkıştırılmışsa sıkıştırma kullanmayın ve yukarıdaki gibi aynı nedenlerle, yalnızca yavaş bağlantılar üzerinden olan SSH bağlantılarını (tüneller vb.) Sıkıştırın.

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.