Patrzyłem na to pytanie i to pytanie , ale wydaje się, że nie odnoszą się one do objawów, które widzę.
Mam duży plik dziennika (około 600 MB), który próbuję przesłać przez sieć komórkową. Ponieważ jest to plik dziennika jest dołączany tylko do (chociaż to jest rzeczywiście w bazie danych SQLite tylko z INSERT wykonywana, więc nie jest całkiem takie proste, ale z wyjątkiem ostatniego 4k strony (a może kilka) plik jest za każdym razem identyczny Ważne jest, aby tylko zmiany (i wszelkie sumy kontrolne, które należy przesłać) były faktycznie wysyłane, ponieważ połączenie danych jest mierzone.
Jednak gdy przeprowadzam test na nieskomunikowanym połączeniu (np. Bezpłatny hotspot Wi-Fi), nie widzę, aby zaobserwowano lub zgłoszono przyspieszenie lub zmniejszenie transferu danych. Przez wolne połączenie Wi-Fi widzę, że rzędu 1 MB / s lub mniej, zgłaszając, że transfer zajmie prawie 20 minut. Przez szybkie połączenie Wi-Fi widzę jednolitą, większą prędkość, ale nie ma raportu o przyspieszeniu, a druga próba transferu (która powinna być teraz szybsza, ponieważ oba pliki są identyczne) nie wykazuje żadnej różnicy.
Polecenie (odkażone w celu usunięcia poufnych informacji) to:
rsync 'ssh -p 9999' --progress LogFile michael@my.host.zzz:/home/michael/logs/LogFile
Wynik, który otrzymuję na końcu, wygląda następująco:
LogFile
640,856,064 100% 21.25MB/s 0:00:28 (xfr$1, to-chk=0/1)
Nie ma wzmianki o żadnym przyspieszeniu.
Podejrzewam, że problem może być jednym z następujących:
- Brakuje mi opcji wiersza polecenia. Jednak ponowne czytanie strony podręcznika wydaje się sugerować, że transfery delta są domyślnie włączone: widzę tylko opcje ich wyłączenia.
- Używam rsync przez ssh (nawet na niestandardowym porcie), ponieważ serwer znajduje się za zaporą ogniową, która zezwala tylko na ssh. Jednak nic nie widziałem wyraźnie mówiącego, że transfery delta nie będą działać, jeśli demon rsync nie działa. Próbowałem użyć notacji „::” zamiast „:”, ale strona podręcznika nie jest bardzo jasna na temat tego, czym jest „moduł”, a moje polecenie zostało odrzucone za podanie nieprawidłowego modułu.
Wykluczyłem, co następuje:
- transfery delta nie są wykonywane w sieci lokalnej. Wykluczony, ponieważ próbuję wykonać transfer przez Internet
- koszty ogólne z powodu obliczenia sumy kontrolnej. Widziałem to zachowanie zarówno na szybkim, jak i wolnym połączeniu Wi-Fi, a szybkość transferu nie wydaje się być związana z obliczeniami.
rsync --stats
, a także -v -v
uzyskać jeszcze więcej szczegółowych statystyk. Rsync powie ci, ile było dopasowanych i niepasujących danych.
but with the exception of the last 4k page (or maybe a few) the file is identical each time.
Czy faktycznie to zweryfikowałeścmp
? A może lepiej,xdelta
czy coś? Jeśli naprawdę chcesz zminimalizować rozmiar transferu, zachowaj starą i nową wersję lokalnie, abyś mógł obliczyć lokalnie minimalny binarny plik różnicowy (z czymś innym niż rsync) i po prostu wysłać go bez konieczności wysyłania sum kontrolnych przez mierzone połączenie. Robienie tego na poziomie rekordu bazy danych zamiast poziomu pliku binarnego jest prawdopodobnie jeszcze lepsze, jak sugeruje derobert.