Usar un script de shell para verificar si rsync realizó algún cambio


10

Tengo un script bash que contiene los dos directorios de rsync. A veces hay un cambio, lo más probable es que no haya nada.

Quiero ejecutar un comando solo si rsync realmente realizó un cambio (agregar / actualizar un archivo). De lo contrario, quiero saltearlo. ¿Hay una respuesta de respuesta que debería estar mirando?

Respuestas:


11

Si usa la opción -i (y no usa la opción -v), rsync solo imprimirá líneas en STDOUT para cualquier cambio que se haya realizado. Dependiendo de su secuencia de comandos, esto podría verse así

if [ -n "$(rsync -i /dir1 /dir2)" ]; then
  run_command;
fi

Eso parece hacer exactamente lo que quiero ... gracias. No pensé en usar la bandera -i así.
raccettura

Para aclarar, si desea ejecutar el script solo si se realizó un cambio, entonces ==debería hacerlo !=.
hamx0r

Bueno, como está, este código está mal por lo que he visto. En cuanto a ese código, lo obtienes Rsync ejecutó FINE o HA ERROR ejecutándose, pero este código no verifica si hubo un cambio. No sé si otra versión de Rsync podría hacerlo, pero estoy usando RSYNC en Raspbmc (una implementación anterior que tenemos) y OSMC. Esto es triste ya que RSYNC parece ser una herramienta maravillosa.

2
Con el -iindicador, la versión rsync 3.1.1sale sending incremental file listcuando no se realizan cambios.
Dor
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.