Odpowiedź @ pdo jest dobra, ale można zwiększyć prędkość za pomocą bufora i dobrej kompresji oraz dodać pasek postępu.
Często sieć stanowi wąskie gardło, a prędkość zmienia się w czasie. Dlatego pomaga buforować dane przed wysłaniem ich przez sieć. Można to zrobić za pomocą pv.
Ponadto zwykle można zwiększyć prędkość za pomocą odpowiedniego algorytmu kompresji. Gzip (jak używany powyżej) jest algorytmem szybkiej kompresji, ale generalnie zstandard ( zstd) (i dla wysokich współczynników kompresji LZMA / LZMA2 ( xz) będzie kompresował się lepiej i był szybszy w tym samym czasie. Nowe Xz i Zstd mają już wbudowaną obsługę wielu rdzeni Aby użyć gzip z wieloma rdzeniami, można użyć Pigza.
Oto przykład wysyłania danych z paskiem postępu, buforowaniem i standardową kompresją przez sieć:
tar cf - . | pv -perabs $(du -sk . | cut -f 1)K | zstd -14 --long=31 -T0 | pv -qCB 512M | ssh user@host "cd /wherever && pv -qCB 512M | zstd -cd -T0 --long=31 | tar xf -"
Pierwszym pvjest pokazanie postępu ( p ), szacowanego czasu ( e ), szybkości transferu ( r ), średniej prędkości ( a ), całkowitej liczby przesłanych bajtów ( b ). Całkowita wielkość szacuje się dui dodaje do wyboru (rozmiar s ). Postęp jest mierzony przed kompresją i buforowaniem, dlatego nie jest zbyt dokładny, ale nadal jest pomocny.
zstdjest używany z ustawieniem kompresji 14 . Liczba ta może zostać zmniejszona lub zwiększona w zależności od prędkości sieci i procesora, więc zstd jest nieco szybszy niż prędkość sieci. Z czterema rdzeniami procesora Haswell 3.2 GHz 14 daje prędkość około 120 MB / s. W tym przykładzie użyto trybu długiego 31 (używa okna 2 GB, wymaga dużo pamięci RAM, ale bardzo dobrze np. Do kompresji zrzutów bazy danych). W T0 Opcje ustawia ilość wątków z liczbą rdzeni. Należy pamiętać, że wraz z długim trybem ustawienia te zajmują dużo pamięci.
Problem z ZSTD polega na tym, że większość systemów operacyjnych nie jest dostarczana z wersją> = 1.3.4. Ta wersja jest niezbędna do prawidłowego obsługi wielu rdzeni i długiego wsparcia. Jeśli nie jest dostępny, można go skompilować i zainstalować z https://github.com/facebook/zstd za pomocą just make -j4 && sudo make install. Zamiast ZSTD można również użyć XZ lub Pigz. xz jest wolny, ale bardzo dobrze kompresuje (dobry przy wolnych połączeniach), pigz / gzip jest szybki, ale nie tak dobrze.
pvjest następnie używane ponownie, ale do buforowania ( qdla cichej, Cdla trybu bez łączenia [zawsze potrzebne do buforowania] i Bdo ustawienia wielkości bufora).
W tym przykładzie bufor jest również używany po stronie odbiornika. Jest to często niepotrzebne (ponieważ szybkość dekompresji i zapisu na dysku twardym jest w większości przypadków wyższa niż prędkość sieci), ale zwykle też nie szkodzi.