¿Es rsync una buena opción para mi proyecto?
Tengo que:
- copiar archivos de la carpeta de origen a la de destino a través de SSH,
- asegurarme de que todos los archivos estén copiados,
- eliminar los archivos de origen después de la copia.
- Si tengo un nombre de conflicto, tengo que cambiar el nombre de los archivos.
Parece que puedo usar la opción: --remove-source-files (para eliminar archivos fuente)
Pero, ¿cómo rsync maneja los conflictos? ¿Puedo tener reglas?
Caso de uso en mi proyecto:
Ejecuto el cálculo científico en el servidor A y los resultados se insertan en la carpeta "proceso", para cada cálculo tengo un repositorio como este: / process / calc1.
Ahora me gustaría transferir el repositorio "/ calc1" al servidor B (obtengo / process / calc1) y borro "calc1" del servidor A.
... Durante otro cálculo obtengo "/ process / calc2" en el servidor A, la idea también es mover "calc2" en el directorio "/ process /" en el servidor B, entonces ahora tengo en el servidor B:
- / process / calc1
- / process / calc2
(y / process / en el servidor A está vacío).
¿Cómo gestionará rsync el conflicto (en el servidor B) si tengo otra carpeta como "/ process / calc1" en el servidor A después de un nuevo cálculo (si "/ process / calc1" ya existe en el servidor B)?
¿Es posible agregar reglas con rsync y cambiar el nombre de "/ process / calc1" por "process / calc1R2" en el servidor B? ¿Y así sucesivamente (ej: calc1R3)?
Gracias.
fuente
Como su nombre lo indica, rsync se usa para sincronizar archivos. Cuando se "sincroniza", esto significa que los archivos en el origen y el destino son los mismos. Eso no parece lo que quieres hacer.
Parece que solo quieres mover algunos archivos. No necesita usar rsync para eso. Parece que estás usando un Linux o BSD. Podrías usar mv -n sobre ssh. La opción -n no sobrescribe los archivos existentes. Esto no es 100% automático. Sin embargo, no veo cómo el archivo ya podría existir en su caso. Los archivos se copiarán del origen al destino y luego se eliminarán del origen. ¿Quieres volver a ejecutar los mismos cálculos? ¿Es por eso que terminarás con archivos con el mismo nombre? Sugeriría agregar un número de ejecución o lote al nombre de la carpeta. Querrías que eso quede claro de todos modos. ¿Tiene algún control sobre cómo se nombra la carpeta? ¿Más detalles? Recomiendo poner los comandos en un script bash o similar.
fuente
Para SSH, en resumen, use esto:
Todo se explica en rsync (1).
En cuanto a la secuencia de comandos para un cronjob, para rsync a través de ssh automáticamente sin requerir una contraseña, busque también en ssh-agent (1).
fuente