tl; dr Over powolne przesyłanie linków, kompresuj, w przeciwnym razie nie. Poniżej znajduje się test prędkości kompresji, link do narzędzia do konwersji przepustowości i niektóre informacje.
Użycie kompresji rsync
przyspieszy tylko wtedy, gdy łącze pośrednie jest „wystarczająco wolne”, tj. Jeśli maszyna na jednym końcu jest w stanie wygenerować skompresowany strumień danych wystarczająco szybko, aby nasycić łącze komunikacyjne.
Więc jakie jest najwolniejsze łącze, pod którym powinienem użyć kompresji, aby cokolwiek zyskać?
Poniżej znajduje się bardzo nienaukowy test, który pokaże, jak szybko gzip
można generować dane i co to oznacza, czy ogólnie należy kompresować masowe transfery sieciowe.
Dane wejściowe zmieni wynik testu znacznie . Używam na komputerze nieskompresowanego (!) Zwykłego pliku, który może reprezentować typ danych, które zwykle przesyłam przez sieć. Używanie /dev/zero
(tworzenie nieograniczonej liczby zer) byłoby mylące, ponieważ strumień zer byłby bardzo łatwy do skompresowania, a użycie /dev/random
byłoby wprowadzające w błąd z przeciwnego powodu. Zamiast tego używam pliku tar z mojego $HOME/local
katalogu, który zawiera oprogramowanie, które zainstalowałem w swoim $HOME
. Plik sam w sobie jest nieskompresowany, ale zawiera mieszankę plików binarnych, małych skompresowanych plików i plików źródłowych / tekstowych. Chciałbym go skompresować z ustawieniem domyślnym, gzip
ponieważ zmniejszyłby się o 67% z 64 MiB do 22 MiB.
$ 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)
Robię to kilka razy, aby poczuć, jaka może być średnia, i dochodzi do około 7800000 bajtów / s.
Następnie używam kalkulatora przepustowości sieci, aby zobaczyć, w co się to przekształca. W tym konkretnym przypadku zdarza się, że jest to przepustowość łącza przewodowego „100Mb Ethernet”, tylko szybciej niż łącze internetowe „Pobieranie VDSL”, nieco szybciej niż łącze bezprzewodowe „802.11 [a / g]” i gdzieś pomiędzy „Bluetooth v3.0” (wolniej) a „USB 2.0” (szybciej).
Oznacza to, że jeśli używam kompresji na czymś szybszym , kompresja prawdopodobnie spowolni przesyłanie pliku.
rsync
może nie używać dokładnie tych samych bibliotek, co gzip
do kompresji, ale powyższe wskazałoby przynajmniej trochę podpowiedź.
rsync
robi więcej niż kompresja, jak wiadomo, a rzeczywisty wzrost prędkości pochodzi tylko z przesyłania [bitów] plików, które uległy zmianie.
Z mojego własnego doświadczenia rsync
wynika , że używanie kompresji z stało się coraz mniej korzystne w ciągu ostatnich 10 lat, ponieważ przepustowość sieci wzrosła (tam, gdzie jestem).
W przypadku tworzenia przyrostowych kopii zapasowych zdecydowanie zaleciłbym sprawdzenie tej --link-dest
opcji (nie ma to nic wspólnego z tym, co zostało przeniesione, tylko z tym, jak rzeczy są przechowywane w miejscu docelowym). Ponadto, jeśli robisz to przez SSH, nie używaj kompresji, jeśli twoje połączenie SSH jest już skompresowane, i tylko kompresuj połączenia SSH (tunele itp.), Które są na wolnych łączach, z tych samych powodów jak powyżej.