Pregunta rsync via cron. ¿Cómo habilito el registro?


Estoy haciendo una copia de seguridad de un servidor remoto en otra computadora usando rsync.

En cron.daily tengo un archivo con esto:

rsync -avz -e ssh root@example.com:/ /mybackup/

Utiliza un par de claves públicas / privadas para iniciar sesión. Esto parece funcionar bien la mayoría de las veces, sin embargo, (tontamente) solo lo he comprobado realmente mirando las fechas en algunos archivos importantes (volcados de MySQL) que sé que cambian todos los días. Obviamente, un error podría ocurrir después de ese archivo.

A veces falla. Cuando lo ejecuto manualmente, a veces sucede algo como "reinicio del cliente".

¿Cuál es la mejor manera de registrarlo para poder verificar con certeza si se completó o no? El registro cron no indica ningún error. No lo he probado, pero la página del manual de rsync en la versión antigua de CentOS en la máquina de copia de seguridad no muestra la opción --log-file. Supongo que podría redirigir stdout con> pero realmente no quiero saber sobre cada archivo. Sólo quiero saber si todo funcionó o no ...

Gracias


8
2018-01-06 15:06


origen




Respuestas:


Creo que ya has resuelto tu propia pregunta. Si redirige stdout y stderr a un archivo, no obtendrá resultados para cada archivo que rsync transfiera, esto solo se produce si se está ejecutando en forma detallada (-v) modo. El comportamiento por defecto de rsync Es solo producir salida en caso de error. Así que puedes hacer esto ...

rsync ... > /var/log/rsync.log 2>&1

... e inspeccionar ese archivo para ver si el rsync más reciente tuvo éxito o no. Estoy usando explícitamente >, que sobrescribirá el archivo de registro cada vez rsync carreras.

También puedes aprovechar el hecho de que rsync sale con un código distinto de cero cuando se produce un error en la transferencia, por lo que podría hacer algo como esto:

rsync ... || echo "rsync failed" | mail -s 'rsync falied' you@example.com

13
2018-01-06 15:14



Gracias. Voy a darle una oportunidad. Asumí que obtendría todos los archivos en el registro porque eso es lo que veo en la pantalla si lo intento manualmente sin información detallada. La cosa del correo se ve bien. - tetranz
Si está ejecutando rsync manualmente sin el -v marca y todavía está viendo la salida por archivo, hay algo mal. La página del manual de rsync dice: "De forma predeterminada, rsync funciona de forma silenciosa. Una única -v le dará información sobre qué archivos se están transfiriendo y un breve resumen al final". - larsks
Bueno, eso es definitivamente lo que está pasando. -v parece estar activado de forma predeterminada. Acabo de hacer la redirección de registros como usted sugiere y el registro tiene una línea para cada archivo. No estoy diciendo que te equivocas. CentOS debe haber compilado rsync de manera diferente. He añadido excluye para / proc y / sys. - tetranz
Mira, estás corriendo en modo detallado. Tienes un -v ahí. - larsks
Uy, gracias. :-) Aún no a la hora del almuerzo. - tetranz


Saque la opción -v y agregue -q. Esto solo dará los errores.


4
2017-08-09 19:25





Tal vez podrías usar el syslog a través del comando: registrador.

Ejecuto scripts de esta manera:

rsync -v what user@host 2>&1 | logger -t backup

Esto escribirá a /var/log/messages por defecto.


1
2018-02-15 15:20