Mam polecenie rsync w aplikacji, która kopiuje zawartość folderu na inną maszynę. Mam tę opcję, --remove-source-files
ponieważ jestem zainteresowany posiadaniem plików na docelowym komputerze dopiero po zakończeniu rsync.
Zastanawiałem się jednak, jak zachowuje się rsync, jeśli ulegnie awarii lub zostanie przerwany podczas przesyłania plików?
Rozważ, że mam dwa pliki do synchronizacji a
i b
. Czy rsync skopiuje a
, a następnie usunie go ze źródła i rozpocznie kopiowanie b
, czy też poczeka na jedno a
i drugie i b
zostanie skopiowane na komputer docelowy przed usunięciem ich obu? Widziałem, że możesz skonfigurować to zachowanie podczas usuwania obcych plików z niektórymi flagami, ale nie znalazłem żadnych informacji na temat usuwania plików źródłowych.
źródło
Odpowiedzi:
Sprawdzanie kodu rsync ujawnia, że pliki źródłowe są usuwane podczas wysyłania, chociaż może nie nastąpić natychmiast. rsync multipleksuje swoje operacje, więc komunikat, że plik został pomyślnie odebrany (i dlatego może zostać usunięty) może być buforowany za innymi danymi.
źródło
Próbowałem (i oczywiście można to łatwo zrobić). Są one usuwane po pomyślnym przesłaniu wszystkich plików. Jeśli przesyłanie zostanie przerwane lub wystąpi inny błąd, pliki źródłowe nie zostaną usunięte, nawet jeśli niektóre z nich zostały przesłane OK.
EDYCJA: zgodnie z odpowiedzią Kyle'a Jonesa sprawa może być inna, gdy w grę wchodzi wiele plików.
źródło