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?

raccettura
fuente

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
Greg D'Arcy
fuente
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