23 dic 2011

Rsync falla con tareas programada CRON !!!

Trabajando en la política backup, de la plataforama de un conocido diario de tirada provincial, la solucion que he utlizado se basa en la maravillosa herramienta "rsync". El script de ejecuacion con todas sus opciones lo he dejado en /etc/cron.daily/ de manera que se ejecute al menos una  vez al dia. Al testear el script de forma manual, ciento de veces, este funciona a la perfeccion realizando el reguardo incremental como es de esperarse. Pero al poco tiempo me encuentro con la sorpresa que por algún motivo la tarea no funciona cuando es ejecutada con "cron". De los mensajes de logs del sistema y de la propia herramienta me encuentro con estas salidas, que llaman la atención:

/var/log/messages

rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="821" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.

Agregando la opción --log-file=/tmp/rsync.log a "rsync", hallo lo siguiente en la salida:

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c
rsync: writefd_unbuffered failed to write  bytes to socket [sender]: Broken pipe (32)

No tengo tiempo de explicar la lógica del procedimiento deductivo para corregir este error, la verdad que esto se soluciono cambiando en las opciones de "rsync": -av por -rLptgov --modify-window=1 . Y reemplazando la version de rsync 3.0.7, que posee bugs, por la 3.0.9 desde las fuentes.  

NOTA: --modify-window=1 surge por estar volcando el backup a un sistema externo de archivos Windows en donde se produce un desfasaje en el timestamp que provoca errores en rsync.