15 votos

Llegar rsync para mover el archivo de origen a destino?

Es rsync es una buena opción para mi proyecto ?

Tengo a :
- copiar los archivos desde la fuente a la carpeta de destino a través de SSH,
- asegúrese de que todos los archivos se copian,
- eliminar los archivos de origen después de la copia.
- si tengo un conflicto de nombre, tengo que cambiar el nombre de archivos.

Parece que pueden utilizar la opción : --remove-fuente-archivos (para eliminar los archivos de origen)
Pero, ¿cómo rsync gestionar los conflictos, puede que yo había reglas ?

Caso de uso en mi proyecto :

Corro cálculo científico en el servidor y los resultados se insertan en la carpeta de "proceso", para cada cálculo que tengo un repositorio como este : /proceso/calc1.
Ahora me gustaría transferencia repositorio "/calc1" para el servidor B (I get /proceso/calc1), y eliminar "calc1" del servidor A.
...Durante otro cálculo me sale "/proceso/calc2" en el servidor, la idea es también mover "calc2" en "/proceso/" directorio en el servidor B, entonces tengo ahora en el servidor B :
- /proceso/calc1
- /proceso/calc2
(y /proceso/ en el servidor está vacío).

Cómo rsync va a gestionar los conflictos (en el servidor B) si tengo otra carpeta como "/proceso/calc1" en el servidor después de que un nuevo cálculo (si "/proceso/calc1" ya existe en el servidor B) ?

Es posible agregar reglas con rsync, y cambiar el nombre de "/proceso/calc1" por "proceso/calc1R2" en el servidor B ? Y así sucesivamente (por ejemplo:calc1R3) ?

Gracias.

11voto

Paul Kroon Puntos 1593

Si usted realmente desea utilizar rsync, suena como que usted necesitará alguna combinación de --copia de seguridad, --copia de seguridad de directorios, y --sufijo. El más cercano creo que se podría conseguir es algo como esto

rsync -abv --suffix R1 --remove-source-files src/ dst/

Esto haría cerca de lo que quieres, pero no iba a cambiar el nombre de los archivos exactamente de la manera que usted querría. El sufijo --opción añade texto al final de un archivo existente, pero sólo hace esto para el primer conflicto. Si usted corrió otra vez, sería simplemente sobrescribir su primera copia de seguridad. Tendrías que cambiar ese sufijo de valor cada vez que se ejecutó el comando, que funcionaría si usted usa algo con una marca de tiempo, como este:

rsync -abv --suffix `date +%Y%m%d%k%M%S` --remove-source-files src/ dst/

No estoy seguro de si esto es excesivo para lo que está después, pero debe cumplir con sus requisitos.

1voto

d-_-b Puntos 705

Como el nombre implica, rsync es utilizado para la sincronización de archivos. Cuando se "sincronizan", esto significa que los archivos de origen y destino son el mismo. Que no parece lo que quieres hacer.

Parece que sólo quieren mover algunos archivos. Usted no necesita utilizar rsync para que. Parece que estás usando un linux o BSD. Usted podría utilizar mv-n a través de ssh. La opción-n no sobrescribir los archivos existentes. Esto no es 100% automático. Sin embargo, no veo la manera de que el archivo podría ya existir en su caso. Los archivos se copiarán desde el origen al destino y luego se retira de la fuente. ¿Desea ejecutar la misma cálculos de nuevo? Es por eso que usted va a terminar con los archivos con el mismo nombre? Te sugiero que anexar una carrera o número de lote, el nombre de la carpeta. Te gustaría que ser claros de todos modos. ¿Tiene algún control sobre la forma en que la carpeta se llama? Más detalles? Yo recomiendo poner los comandos en un script de bash o similar.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: