Próbuję skonfigurować rsync do synchronizacji mojego głównego serwera WWW ze zdalnym serwerem poprzez dodanie nowo wygenerowanego pliku do późniejszego.
Oto polecenie, którego używam:
rsync -avh --update -e "ssh -i /path/to/thishost-rsync-key" remoteuser@remotehost:/foo/bar /foo/bar
Wygląda jednak na to, że serwer sieciowy faktycznie przenosi wszystkie pliki pomimo flagi „--update”. Próbowałem różnych kombinacji flag (np. Pomijając „-a” i zamiast tego używam „-vv”), ale żadna nie pomogła. Zastanawiam się więc, jak mogę zmodyfikować polecenie rsync, aby wysyłać tylko nowo dodane pliki. Dzięki
rsync /foo/bar remoteuser@remotehost:/foo/bar
-a
opcji (właściciel, grupa, perms, ...), powinno to być przyczyną naszego problemu.-c
opcję. Pomija istniejące pliki na podstawie sumy kontrolnej, zamiast czasu modyfikacji lub rozmiaru.Odpowiedzi:
Od
man rsync
:--update
robi coś nieco innego, dlatego prawdopodobnie otrzymujesz nieoczekiwane wyniki (patrzman rsync
):źródło
--ignore-existing
znaczy, że nie przesyłaj plików, które istnieją w odbiorniku, ani nie przesyłaj plików, jeśli jakiś plik / folder o tej samej nazwie istnieje w odbiorniku?W moim przypadku miałem podobne problemy, ponieważ wszystkie pliki zostały przeniesione zamiast tylko zmodyfikowanych / nowych. Rozwiązałem to za pomocą parametrów
-t
(zamiast-a
) i-P
(równoważnych--partial --progress
):Przenosi to tylko nowe pliki i pliki już istniejące, ale zmodyfikowane:
-a
robi zbyt wiele, jak synchronizacja identyfikatorów użytkowników i grup, co w moim przypadku nie może działać, ponieważ mam różnych użytkowników i grupy w moich źródłowych i docelowych systemach.Parametry w szczegółach:
-h
: liczby czytelne dla człowieka-v
: pełny-r
: przejdź do katalogów-P
:--partial
(zachowaj częściowo przesłane pliki) +--progress
(pokaż postęp podczas przesyłania)-t
: zachowaj czasy modyfikacjiźródło
-rlptgoD
, więc pozwolenie nie zostaje spłaszczone, grupy i właściciel zachowane - nie moja typowa bezpieczna kopia zapasowa ...)Z mojego doświadczenia z rsync, kopiowanie partycji 1 TB jest zbyt duże, aby było wydajne. Przetwarzanie wymaga rsync na zawsze. Zamiast tego zrób to według podkatalogów. Oznacza to, że uruchom rsync dla każdego głównego podkatalogu. Idzie o wiele szybciej, jeśli nie musi żonglować dziesiątkami tysięcy plików.
źródło
Próbować
źródło