Używam rsync 3.1.1, aby zsynchronizować dwa dyski, z których jeden jest w sieci i jest zamontowany jako udział samby /mnt/ROUTER_WD_2TB/
. Jest to źródło o prędkości 30–40 MB / s ze względu na ograniczenia sieci. Drugi, miejsce docelowe, jest montowany lokalnie (szczyt 110 MB / s) i jest /mnt/BACKUP_HITACHI_2TB/
.
Używam następującego polecenia rsync:
rsync -haAXi --quiet --append-verify --delete /mnt/ROUTER_WD_2TB/* /mnt/BACKUP_HITACHI_2TB/.
Dyski zawierają wiele plików, w większości małych.
Problem polega na tym, że rsync zajmuje dość dużo czasu (10-20 m), zanim zacznie przenosić jakiekolwiek pliki, chyba dlatego, że musi obliczyć listy plików dla bardzo dużej liczby małych plików. W tym okresie wykorzystanie nowej pracy wynosi 200-500 KB / s, a podczas przesyłania plików prędkość wynosi około 40 MB / s.
Zwykle zdarza się, że rsync potrzebuje około 15 m, aby w końcu znaleźć coś do skopiowania, a następnie zajmuje 5 sekund, aby je skopiować, a następnie kontynuuje sprawdzanie innych plików do skopiowania przez kolejne 5 minut. Podsumowując, 5-sekundowa kopia pliku kończy się na 20 minut!
Czy mogę podjąć jakieś środki, aby uniknąć tego długiego okresu przed kopiowaniem plików, poza wykluczeniem folderów? Jakikolwiek „bufor”, który mogę wdrożyć, aby rsync nie musiał odbudowywać całej listy plików od zera?
Odpowiedzi:
Jeśli chodzi
rsync
o ciebie, kopiujesz między dwoma lokalnymi drzewami plików, więc wyłącza większość jego optymalizacji (w tym algorytm delta, z którego jest znany). Jeśli możesz uruchomićrsync
na zdalnym serwerze (dzięki czemu uzyskasz prawdziwy scenariusz klient-serwer w całej sieci), zyskasz znaczną przyczepność.Niemniej jednak istnieją inne opcje do rozważenia
Kopiowanie bez obawy o usunięcie starych plików. Może to pozwolić na częstsze wykonywanie szybszego transferu i spowolnienie wolniejszego czyszczenia, mówiąc tylko raz dziennie:
Użyj odmiany
rsync
domyślnego algorytmu usuwania, aby uniknąć tworzenia pełnej listy plików przed przesłaniem:Podziel katalogi najwyższego poziomu na osobne zadania i uruchom je równolegle. Może się okazać, że jeśli jesteś związany dyskowym We / Wy, to to naprawdę nie pomoże, a dla obracających się talerzy prawie na pewno pogorszy to sytuację.
Jeśli żadna z tych sugestii pomaga wówczas warto byłoby dodanie innego
--verbose
celursync
, aby zobaczyć, co robi. Podejrzewam, że grzechotają wszystkie niezmienione pliki, a jeśli masz wystarczająco dużo plików, zajmuje to dużo czasu.źródło
--delete --delete-during
nie zrobiłem tego dla mnie - nadal wysłałem przyrostową listę plików - ale od--delete --delete-before
razu przeszedłem do:,building file list
co wydaje się dużym postępem. Myślę.--delete-before
,rsync
wykonuje dwa przejścia przez drzewo plików: jedno do usuwania, a drugie do kopiowania.możesz użyć,
-vv
aby zobaczyć cały dziennikrsync
.źródło