Chciałem wykonać kopię zapasową ścieżki z komputera w mojej sieci do innego komputera w tej samej sieci przez linię 100 Mbit / s. Zrobiłem to
dd if=/local/path of=/remote/path/in/local/network/backup.img
co dało mi bardzo niską prędkość przesyłu sieci około 50 do 100 kB / s, co zajęłoby wieczność. Więc go zatrzymałem i postanowiłem spróbować zgzipować go w locie, aby go znacznie zmniejszyć, aby kwota do transferu była mniejsza. Więc zrobiłem
dd if=/local/path | gzip > /remote/path/in/local/network/backup.img.gz
Ale teraz dostaję prędkość transferu sieci wynoszącą 1 MB / s, czyli 10 do 20 razy szybciej. Po zauważeniu tego przetestowałem to na kilku ścieżkach i plikach i zawsze było tak samo.
Dlaczego dd
przepuszczanie przez gzip
rurę również zwiększa szybkość przesyłania o duży czynnik, zamiast tylko zmniejszać długość strumienia o duży czynnik? Spodziewałem się nawet niewielkiego spadku szybkości transferu z powodu większego zużycia procesora podczas kompresji, ale teraz mam podwójny plus. Nie żebym nie był szczęśliwy, ale po prostu się zastanawiam. ;)
dd
wyjście z prędkością 1 MB / s ... bezpośrednio do oczekującej gzip
rury. Ma bardzo mało wspólnego z rozmiarem bloku.