rsync via cron. Comment activer la journalisation?

8

Je sauvegarde un serveur distant sur un autre ordinateur à l'aide de rsync.

Dans cron.daily j'ai un fichier avec ceci:

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

Il utilise une paire de clés publique / privée pour se connecter. Cela semble bien fonctionner la plupart du temps cependant, je ne l'ai (stupidement) vérifié qu'en regardant les dates de certains fichiers importants (décharges MySQL) que je sais changer tous les jours. De toute évidence, une erreur pourrait se produire après ce fichier.

Parfois, cela échoue. Lorsque je l'exécute manuellement, quelque chose comme «réinitialisation client» se produit parfois.

Quelle est la meilleure façon de l'enregistrer pour que je puisse vérifier avec certitude si elle s'est terminée ou non? Le journal cron n'indique aucune erreur. Je ne l'ai pas essayé mais la page de manuel rsync sur l'ancienne version de CentOS sur la machine de sauvegarde n'affiche pas l'option --log-file. Je suppose que je pourrais rediriger stdout avec> mais je ne veux pas vraiment connaître chaque fichier. Je veux juste savoir si tout a fonctionné ou non ..

Merci

tetranz
la source

Réponses:

13

Je pense que vous avez déjà résolu votre propre question. Si vous redirigez à la fois stdout et stderr vers un fichier, vous n'obtiendrez pas de sortie pour tous les transferts de fichiers rsync - cela n'est produit que si vous exécutez en -vmode verbose ( ). Le comportement par défaut de rsyncest de ne produire une sortie qu'en cas d'erreur. Vous pouvez donc le faire ...

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

... et inspectez ce fichier pour voir si le rsync le plus récent a réussi ou non. J'utilise explicitement >, ce qui écrasera le fichier journal à chaque rsyncexécution.

Vous pouvez également profiter du fait que les rsyncsorties avec un code différent de zéro lorsque le transfert échoue, vous pouvez donc quelque chose comme ceci:

rsync ... || echo "rsync failed" | mail -s 'rsync falied' [email protected]
larsks
la source
Merci. Je vais essayer. J'ai supposé que j'obtiendrais chaque fichier dans le journal parce que c'est ce que je vois à l'écran si je l'essaie manuellement sans verbose. La chose de courrier semble bonne.
tetranz
Si vous exécutez rsync manuellement sans l' -vindicateur et que vous voyez toujours une sortie par fichier, il y a un problème. La page de manuel rsync indique: "Par défaut, rsync fonctionne en mode silencieux. Un seul -v vous donnera des informations sur les fichiers qui sont transférés et un bref résumé à la fin."
larsks
Eh bien, c'est certainement ce qui se passe. -v semble être activé par défaut. Je viens de faire la redirection du journal comme vous le suggérez et le journal a une ligne pour chaque fichier. Je ne dis pas que tu as tort. CentOS doit avoir compilé rsync différemment. J'ai ajouté des exclus pour / proc et / sys.
tetranz
J'utilise CentOS et rsync se comporte comme décrit. À quoi ressemble votre ligne de commande?
larsks
1
Vous voyez, vous exécutez en mode verbeux. Vous en avez un -v.
larsks
4

Supprimez l'option -v et ajoutez -q. Cela ne donnera que les erreurs

Mat
la source
1

Vous pourriez peut-être utiliser le syslog via la commande: logger .

J'exécute les scripts de cette façon:

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

Ce sera écrit /var/log/messagespar défaut.

user897079
la source