rsync via cron. Como faço para ativar o log?

8

Estou fazendo o backup de um servidor remoto em outro computador usando o rsync.

No cron.daily eu tenho um arquivo com isto:

rsync -avz -e ssh [email protected]:/ /mybackup/

Ele usa um par de chaves pública / privada para fazer login. Isso parece funcionar bem na maioria das vezes, no entanto, eu (tolamente) só realmente chequei isso olhando as datas em alguns arquivos importantes (lixões do MySQL) que eu sei mudar todos os dias. Obviamente, um erro poderia ocorrer depois desse arquivo.

Às vezes, falha. Quando eu o executo manualmente, algo como "reinicialização do cliente" às vezes acontece.

Qual é a melhor maneira de registrá-lo para que eu possa verificar com certeza se ele foi concluído ou não? O log do cron não indica nenhum erro. Eu não tentei, mas a página man do rsync na versão antiga do CentOS na máquina de backup não mostra a opção --log-file. Eu acho que eu poderia redirecionar o stdout com > mas eu realmente não quero saber sobre todos os arquivos. Eu só quero saber se tudo funcionou ou não ..

Obrigado

    
por tetranz 06.01.2011 / 16:06

3 respostas

13

Acho que você já resolveu sua própria pergunta. Se você redirecionar stdout e stderr para um arquivo, você não obterá saída para cada arquivo de transferências rsync - isso só será produzido se você estiver executando no modo detalhado ( -v ). O comportamento padrão de rsync é produzir apenas a saída no caso de um erro. Então você pode fazer isso ...

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

... e inspecione esse arquivo para ver se o rsync mais recente foi bem-sucedido ou não. Estou explicitamente usando > , que sobrescreverá o arquivo de log sempre que rsync for executado.

Você também pode aproveitar o fato de que rsync sai com um código diferente de zero quando a transferência falha, então você pode fazer algo assim:

rsync ... || echo "rsync failed" | mail -s 'rsync falied' [email protected]
    
por 06.01.2011 / 16:14
4

Retire a opção -v e adicione -q. Isso só vai dar os erros

    
por 09.08.2012 / 21:25
1

Talvez você possa usar o syslog por meio do comando: logger .

Eu executo scripts dessa maneira:

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

Isso gravará em /var/log/messages por padrão.

    
por 15.02.2014 / 16:20

Tags