W jaki sposób? Lub TL; DR
Najszybszy sposób znalazłem to połączenie tar, mbuffera ssh.
Na przykład:
tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"
Dzięki temu osiągnąłem trwały transfer sieci lokalnej ponad 950 Mb / s na łączach 1 Gb. Zamień ścieżki w każdym poleceniu tar, aby były odpowiednie do tego, co przenosisz.
Dlaczego? mbuffer!
Największym wąskim gardłem w przesyłaniu dużych plików przez sieć jest zdecydowanie dyskowe operacje we / wy. Odpowiedź brzmi: mbufferlub buffer. Są w dużej mierze podobne, ale mbuffermają pewne zalety. Domyślny rozmiar bufora to 2 MB dla mbufferi 1 MB dla buffer. Większe bufory prawdopodobnie nigdy nie będą puste. Wybór rozmiaru bloku, który jest najniższą wspólną wielokrotnością rodzimego rozmiaru bloku zarówno w docelowym, jak i docelowym systemie plików, zapewni najlepszą wydajność.
Buforowanie jest rzeczą, która sprawia, że wszystkie różnica! Użyj go, jeśli go masz! Jeśli go nie masz, weź go! Używanie (m}?bufferplus cokolwiek jest lepsze niż cokolwiek innego. jest to niemal dosłownie panaceum na powolne przesyłanie plików w sieci.
Jeśli przenosisz wiele plików, użyj ich, taraby „połączyć” je w jeden strumień danych. Jeśli jest to pojedynczy plik, którego można użyć catlub przekierowanie we / wy. Obciążenie tarvs. catjest statystycznie nieistotne, więc zawsze używam tar(lub zfs -sendgdzie mogę), chyba że jest to już tarball . Żadne z nich nie gwarantuje otrzymania metadanych (w szczególności catnie będzie). Jeśli chcesz metadanych, zostawię to jako ćwiczenie dla ciebie.
Wreszcie użycie sshmechanizmu transportowego jest zarówno bezpieczne, jak i niesie za sobą bardzo niewiele kosztów. Ponownie, narzut sshkontra vs. ncjest statystycznie nieistotny.