¿Es seguro sincronizar la misma fuente con el mismo destino en paralelo?

¿Es seguro sincronizar la misma fuente con el mismo destino en paralelo?

Mi aplicación usa rsync para copiar archivos del controlador de red al local como caché para mejorar el rendimiento.

Pero dado que mi aplicación podría ejecutarse en paralelo, al igual que rsync, podría darse el caso de que 2 instancias desincronizaciónejecutándose en paralelo contra la misma fuente y directorio.

Me encontré con el problema de que el destino no se sincroniza completamente (dejando un subdirectorio vacío). entonces dudo que sea un problema de rsync, entonces

  • ¿Es seguro rsync para copiar archivos desde la misma fuente al mismo destino en paralelo?
  • ¿Existe alguna opción disponible para garantizar la corrección de dicha operación?

Las opciones que estoy usando son:

rsync -a --copy-unsafe-links --delete

Respuesta1

Probablemente sea seguro ejecutar rsyn en paralelo, pero no eficiente, ya que lo más probable es que los archivos se transfieran dos veces ya que rsync constituye la lista de archivos para transferir al principio. Por supuesto, siempre existe la pequeña posibilidad de que ambos rsyncs transfieran el mismo archivo simultáneamente, pero el contenido debería ser el mismo después.

Para evitar ejecuciones dobles, generalmente escribo un script que verifica y, de lo contrario, touchgenera un archivo de bloqueo que se elimina al final. Como opción, puede usar una trampa en su secuencia de comandos para limpiar el archivo de bloqueo si interrumpe la secuencia de comandos o cuando ocurre un error (use 'trampa de ayuda' dentro de su shell). Hasta donde yo sé, no existe tal mecanismo de bloqueo en el propio rsync (lo cual sería difícil de implementar de todos modos).

información relacionada