rsync --remove-source-files usuwa pliki źródłowe jeden po drugim lub po zakończeniu rsync?

23

Mam polecenie rsync w aplikacji, która kopiuje zawartość folderu na inną maszynę. Mam tę opcję, --remove-source-filesponieważ 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 ai b. Czy rsync skopiuje a, a następnie usunie go ze źródła i rozpocznie kopiowanie b, czy też poczeka na jedno ai drugie i bzostanie 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.

brafales
źródło
podobnie jak stackoverflow.com/questions/7380234/... chociaż myślę, że Kyle może mieć rację - czasami wydaje się, że rsync czeka na zakończenie wszystkich plików, ale czasami usuwa je przed ukończeniem. Wciąż trochę zmieszany.
Chris2048

Odpowiedzi:

16

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.

Kyle Jones
źródło
2
Zgodnie z moją odpowiedzią poniżej wypróbowałem ją z kilkoma plikami, a pliki zostały usunięte tylko wtedy, gdy cała operacja zakończyła się powodzeniem. To sprawia, że ​​myślę, że znaleziony sygnał „przenieś OK” jest przeniknięty dopiero po pomyślnym zakończeniu całej operacji.
Daniel Andersson
5
Jeśli wypróbujesz więcej niż kilka plików, zobaczysz, że pliki źródłowe znikają przed zakończeniem całego przesyłania.
Kyle Jones
wygląda to tak, że przy określaniu katalogów i opcji rekurencyjnej pliki w nie są natychmiast usuwane
Andre Holzner
4

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.

Daniel Andersson
źródło