
Tengo algún directorio compartido /path/to/dir
. Estoy ejecutando un proceso de copia de seguridad en ese directorio. El proceso se ejecuta en el servidor A mientras que solo tengo acceso en el servidor B. Entonces, cuando finalice el proceso de copia de seguridad en el servidor A, tendré los datos en el directorio compartido /path/to/dir
que también está disponible en el servidor B.
Ahora tengo un script bash en el servidor B que sólo puede ejecutarse cuando finaliza el proceso de copia de seguridad. Como no puedo acceder al otro servidor estaba pensando en lo siguiente:
¿Puedo comprobar si /path/to/dir
el proceso de copia de seguridad todavía lo utiliza y solo ejecutar mi script si el proceso ya no se ejecuta en el directorio?
No sé si es importante saber que es un directorio compartido (NFS).
Respuesta1
Una mejor solución: cree un archivo de bloqueo en el recurso compartido que solo exista mientras se ejecuta el trabajo y se eliminará en el servidor A una vez que finalice el trabajo.
En el servidor B, simplemente verifica si este archivo existe y, si existe, espera hasta que desaparezca.
Respuesta2
Configure una aplicación de producción A para crear los archivos example_output.tar.gz.part
y solo después de asegurarse de que todo esté terminado, cambie el nombre aexample_output.tar.gz
Configure una aplicación de consumo B para ignorar los *.part
archivos y procesar todos los archivos que no coinciden*.part
Este esquema es reconocible porque se utiliza en muchas aplicaciones de consumo (me vienen a la mente navegadores web o clientes scp).
De esta manera no necesita ningún archivo de bloqueo y puede tener varios consumidores. Un archivo de bloqueo siempre es una causa potencial de falla si queda uno antiguo después de que una aplicación muere (o se reinicia el servidor).