Nasıl? Veya TL; DR
Bulduğum en hızlı yöntem bir kombinasyonudur tar, mbufferve ssh.
Örneğin:
tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"
Bunu kullanarak 1Gb bağlantılarda 950 Mb / s üzerinde sürekli yerel ağ aktarımları gerçekleştirdim. Aktardığınız öğeye uygun olması için her tar komutundaki yolları değiştirin.
Neden? mbuffer!
Büyük dosyaları ağ üzerinden aktarmada en büyük darboğaz, disk I / O'dur. Bunun cevabı mbufferya buffer. Büyük ölçüde benzerdirler, ancak mbufferbazı avantajları vardır. Varsayılan arabellek boyutu için 2 MB mbufferve için 1 MB'dir buffer. Daha büyük arabelleklerin asla boş kalmaması daha olasıdır. Hem hedef hem de hedef dosya sisteminde yerel blok boyutunun en küçük ortak katı olan bir blok boyutu seçmek en iyi performansı verecektir.
Tamponlama tüm farkı yaratan şeydir ! Eğer varsa onu kullanın! Eğer sahip değilseniz, alın! (m}?bufferArtı bir şey kullanmak tek başına her şeyden daha iyidir. neredeyse tam anlamıyla yavaş ağ dosya aktarımları için her derde devadır.
Birden fazla dosya aktarıyorsanız, tarbunları tek bir veri akışında "topaklamak" için kullanın . Tek bir dosyaysa catveya G / Ç yönlendirmesi kullanabilirsiniz. Bir havai tarvs. cathep kullanmak bu yüzden istatistiksel olarak anlamsız olduğu tar(ya da zfs -sendnerede can) zaten bir sürece tarball . Bunların hiçbirinin size meta veri vereceği garanti catedilmez (ve özellikle vermez). Meta veri istiyorsanız, bunu sizin için bir egzersiz olarak bırakacağım.
Son olarak, sshbir taşıma mekanizması için kullanmak hem güvenlidir hem de çok az ek yük taşır. Yine, bir havai sshvs. ncistatistiksel önemsizdir.