rsync a través de cron. ¿Cómo habilito el registro?

8

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 [email protected]:/ /mybackup/

Utiliza un par de claves pública / privada para iniciar sesión. Esto parece funcionar bien la mayoría de las veces, sin embargo, (tontamente) solo lo he verificado mirando las fechas en algunos archivos importantes (volcados de MySQL) que sé que cambian todos los días. Obviamente, podría ocurrir un error 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 que pueda verificar con certeza si se completó o no? El registro cron no indica ningún error. No lo he probado, pero la página de manual de rsync en la versión más antigua de CentOS en la máquina de respaldo no muestra la opción --log-file. Supongo que podría redirigir stdout con> pero realmente no quiero saber acerca de cada archivo. Solo quiero saber si todo funcionó o no ...

Gracias

tetranz
fuente

Respuestas:

13

Creo que ya has resuelto tu propia pregunta. Si redirige stdout y stderr a un archivo, no obtendrá resultados para cada transferencia rsync de archivos; esto solo se produce si está ejecutando en modo detallado ( -v). El comportamiento predeterminado de rsynces producir solo resultados en caso de error. Entonces puedes hacer esto ...

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

... e inspeccione ese archivo para ver si el rsync más reciente fue exitoso o no. Estoy usando explícitamente >, lo que sobrescribirá el archivo de registro cada vez que se rsyncejecute.

También puede aprovechar el hecho de que rsyncsale con un código distinto de cero cuando falla la transferencia, por lo que podría hacer algo como esto:

rsync ... || echo "rsync failed" | mail -s 'rsync falied' [email protected]
larsks
fuente
Gracias. Voy a darle una oportunidad. Supuse que obtendría todos los archivos en el registro porque eso es lo que veo en la pantalla si lo intento manualmente sin detalles. El correo se ve bien.
tetranz
Si está ejecutando rsync manualmente sin la -vbandera y todavía está viendo la salida por archivo, hay algo mal. La página de manual de rsync dice: "De manera predeterminada, rsync funciona de manera silenciosa. Una sola -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 por defecto. Acabo de hacer la redirección de registro como sugiere y el registro tiene una línea para cada archivo. No digo que te equivoques. CentOS debe haber compilado rsync de manera diferente. He agregado exclusiones para / proc y / sys.
tetranz
Estoy ejecutando CentOS y rsync se comporta como se describe. ¿Cómo se ve realmente su línea de comando?
larsks
1
Mira, estás corriendo en modo detallado. Tienes un -vallí.
larsks
4

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

Mate
fuente
1

Tal vez podría usar el syslog mediante el comando: logger .

Ejecuto scripts de esta manera:

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

Esto escribirá /var/log/messagespor defecto.

user897079
fuente