Próbuję przenieść tysiące małych plików z jednego serwera na drugi za pomocą następującego polecenia:
rsync -zr --delete /home/user/ [email protected]::backup
Obecnie transfer zajmuje dużo czasu (nie miałem tego czasu). Czy istnieje sposób, aby to przyspieszyć? Czy powinienem używać innego narzędzia? Czy powinienem używać rsync zamiast ssh zamiast protokołu rsync?
stat()
.-a
ale-r
?Odpowiedzi:
Musisz określić wąskie gardło. To nie jest rsync. Prawdopodobnie nie jest to przepustowość sieci. Jak sugerował @Zoredache , najprawdopodobniej jest to ogromna liczba IOP generowanych przez wszystkie
stat()
połączenia. Każde narzędzie do synchronizacji będzie musiało statystyki plików. Podczas synchronizacji uruchom,iostat
aby zweryfikować.Tak więc powstaje pytanie; jak zoptymalizować statystyki? Dwie proste odpowiedzi:
noatime
i dodaj adir_index
).Jeśli przez przypadek nie jest to limit na dysku, to możesz eksperymentować z podzieleniem drzewa katalogów na wiele różnych drzew i uruchomić wiele rsync.
źródło
Kompresja nie jest bardzo przydatna w przypadku małych plików (powiedzmy mniej niż 100 bajtów). W przypadku małych plików czasami skompresowana wersja może być nawet większa niż oryginał. Spróbuj wykonać
rsync
polecenie bez-z
flagi.ssh
jest dobre dla bezpieczeństwa, ale nie przyspieszy transferu. W rzeczywistości spowodowałoby to spowolnienie transferu ze względu na potrzebę szyfrowania / deszyfrowania.rsync
może nie wydawać się szybki przy pierwszym uruchomieniu, ponieważ jest dużo danych do przesłania. Jeśli jednak planujesz uruchamiać to polecenie okresowo, kolejne uruchomienia mogą być znacznie szybsze, ponieważrsync
rozsądnie jest nie przesyłać plików, które nie uległy zmianie.źródło
rsync
klienta, użyje on SSH za kulisami. Musisz zrobić wszystko, aby wyłączyć szyfrowanie podczas korzystania z rsync. Zobacz: stackoverflow.com/a/1821574/64911Jakiej wersji rsync używasz? Wszystko starsze niż 3.0.0 (na obu końcach) nie ma funkcji przyrostowej listy plików, która przyspiesza duże transfery.
źródło
Dodaj
-v --progress
do wiersza polecenia rsyncrsync odbywa się w 2 krokach:
Jeśli rsync ma tysiące małych plików w zagnieżdżonych katalogach, może być tak, że rsync spędza większość czasu na przechodzeniu do podkatalogów i znajdowaniu wszystkich plików
Jeśli czas nie zostanie poświęcony na przeglądanie, może to wynikać z dodania wszystkich opóźnień rozpoczynających każdy nowy transfer plików.
źródło
W przypadku systemów plików ext3 lub ext4 sprawdź, czy oba mają włączoną funkcję dir_index ! W moim przypadku potroiła się przepustowość rsync.
Zobacz szczegóły w mojej odpowiedzi na stronie : /server//a/759421/80414
źródło