rsync --remove-source-files elimina los archivos fuente uno por uno o después de que se completa rsync?

23

Tengo un comando rsync en una aplicación que copia el contenido de una carpeta a otra máquina. Tengo la opción --remove-source-filesporque solo estoy interesado en tener los archivos en la máquina de destino después de que el rsync haya finalizado.

Sin embargo, me preguntaba cómo se comporta rsync si se bloquea o se interrumpe al transferir archivos.

Considere que tengo dos archivos para sincronizar, ay b. Rsync se copia a, a continuación, eliminarlo de la fuente, y empezar a copiar b, o va a esperar por tanto ay bse copien en la máquina de destino antes de eliminar a los dos? He visto que puede configurar este comportamiento al eliminar archivos extraños con algunos indicadores, pero no encontré ninguno sobre la eliminación de los archivos de origen.

brafales
fuente
similar a stackoverflow.com/questions/7380234/… aunque creo que Kyle puede tener razón, a veces parece que rsync espera a que se completen todos los archivos, pero a veces elimina los archivos antes de completarlos. Aún un poco confundido sin embargo.
Chris2048

Respuestas:

16

La comprobación del código rsync revela que los archivos fuente se eliminan a medida que se envían, aunque puede que no suceda de inmediato. rsync multiplexa sus operaciones, por lo que el mensaje de que un archivo se recibió con éxito (y, por lo tanto, se puede eliminar) puede almacenarse detrás de otros datos.

Kyle Jones
fuente
2
Según mi respuesta a continuación, lo probé con un par de archivos, y los archivos solo se eliminaron si la operación completa fue exitosa. Eso me hace pensar que la señal de "transferencia correcta" que encontró solo se permea cuando la operación completa es exitosa.
Daniel Andersson
55
Si lo prueba con más de unos pocos archivos, verá que los archivos fuente desaparecen antes de que se complete la transferencia.
Kyle Jones
parece que al especificar directorios y la opción recursiva, los archivos en un no se eliminan de inmediato
Andre Holzner
4

Lo intenté (y tú también podrías hacerlo fácilmente, para estar seguro). Se eliminan después de que todos los archivos se transfieren correctamente. Si se interrumpe la transferencia o se produce otro error, los archivos de origen no se eliminan, incluso si algunos de ellos se transfirieron correctamente.

EDITAR: según la respuesta de Kyle Jones, el caso puede ser diferente cuando hay muchos archivos involucrados.

Daniel Andersson
fuente