Frage rsync über Cron. Wie aktiviere ich die Protokollierung?


Ich bin Sichern eines Remote-Servers auf einen anderen Computer mit Rsync.

In cron.daily habe ich eine Datei dazu:

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

Es verwendet ein öffentliches / privates Schlüsselpaar zum Anmelden. Dies scheint die meiste Zeit gut zu funktionieren, aber ich habe es (törichterweise) nur wirklich überprüft, indem ich mir die Daten einiger wichtiger Dateien (MySQL-Dumps) ansehe, von denen ich weiß, dass sie sich jeden Tag ändern. Offensichtlich könnte nach dieser Datei ein Fehler auftreten.

Manchmal schlägt es fehl. Wenn ich es manuell ausführe, passiert manchmal etwas wie "Client-Reset".

Was ist der beste Weg, um es zu protokollieren, so dass ich mit Sicherheit überprüfen kann, ob es abgeschlossen ist oder nicht? Das Cron-Protokoll zeigt keine Fehler an. Ich habe es nicht ausprobiert, aber die rsync-man-Seite auf der alten Version von CentOS auf dem Backup-Rechner zeigt nicht die Option --log-file an. Ich denke, ich könnte stdout mit> umleiten, aber ich möchte nicht wirklich über jede Datei Bescheid wissen. Ich möchte nur wissen, ob alles funktioniert oder nicht.

Vielen Dank


8
2018-01-06 15:06


Ursprung




Antworten:


Ich denke du hast deine eigene Frage schon gelöst. Wenn Sie sowohl stdout als auch stderr in eine Datei umleiten, erhalten Sie nicht für jede Datei die Ausgabe von rsync-Übertragungen - dies wird nur erzeugt, wenn Sie ausführlich (-v) Modus. Das Standardverhalten von rsync soll nur im Fehlerfall eine Ausgabe erzeugen. So können Sie das tun ...

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

... und überprüfe diese Datei, um zu sehen, ob das letzte rsync erfolgreich war oder nicht. Ich benutze explizit >, die die Protokolldatei jedes Mal überschreibt rsync läuft.

Sie könnten auch die Tatsache nutzen, dass rsync Exit mit einem Code ungleich Null, wenn die Übertragung fehlschlägt, also könnten Sie so etwas wie folgt:

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

13
2018-01-06 15:14



Vielen Dank. Ich werde es versuchen. Ich nahm an, dass ich jede Datei in das Protokoll aufnehmen würde, denn das sehe ich auf dem Bildschirm, wenn ich es manuell ohne Ausführlichkeit versuche. Die Postsache sieht gut aus. - tetranz
Wenn Sie rsync manuell ohne das ausführen -v Flag und Sie sehen immer noch die Ausgabe pro Datei, da stimmt etwas nicht. Auf der rsync man-Seite heißt es: "Standardmäßig arbeitet rsync im Hintergrund. Ein einziges -v gibt Ihnen Informationen darüber, welche Dateien übertragen werden und eine kurze Zusammenfassung am Ende." - larsks
Nun, das ist definitiv was passiert. -v scheint standardmäßig aktiviert zu sein. Ich habe gerade die Protokollumleitung gemacht, wie Sie vorschlagen, und das Protokoll hat eine Zeile für jede Datei. Ich sage nicht, dass du falsch liegst. CentOS muss rsync anders kompiliert haben. Ich habe Ausschlüsse für / proc und / sys hinzugefügt. - tetranz
Sehen Sie, Sie laufen im ausführlichen Modus. Du hast eine -v Dort. - larsks
Hoppla Danke. :-) Noch nicht einmal Mittag. - tetranz


Nehmen Sie die Option -v heraus und fügen Sie -q hinzu. Dies wird nur die Fehler geben


4
2017-08-09 19:25





Vielleicht könnten Sie das syslog über den Befehl verwenden: Logger.

Ich führe Skripte auf diese Weise:

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

Dies wird zu schreiben /var/log/messages standardmäßig.


1
2018-02-15 15:20