Zwei Fragen zu rsync - Fehler beim Übertragen und Protokollieren

Zwei Fragen zu rsync - Fehler beim Übertragen und Protokollieren

Ich arbeite an der Implementierung einer Protokollsicherungslösung, die auf der Verwendung von rsync basiert, um Daten von einem lokalen Server auf einen Remote-Protokollierungsserver zu verschieben. Wir haben zwei Bedenken – das erste ist, dass ich bis jetzt noch keine Protokollierung implementiert habe, die durchgeführt werden müsste. Die Manpage für rsync ist riesig und wir verwenden keinen rsync-Server, sondern nur ein Oncall-rsync, um Daten vom Client (vom Client initiiert) auf den Speicherserver zu übertragen.

Fällt irgendjemandem spontan ein, ob es Protokollierungsoptionen für Fehler während der Übertragung oder ähnliches gibt?

Aufgrund der Art und Weise, wie wir es implementieren, versucht das Shell-Skript außerdem zuerst, den lokalen Backup-Server anzupingen. Wenn der Ping erfolgreich ist, werden die Dateien hochgeladen. Wenn der Ping jedoch nicht erfolgreich ist, werden die Dateien stattdessen auf einen georedundanten Backup-Server hochgeladen. Dies hinterlässt eine Lücke, wenn der Hauptserver mitten im rsync ausfällt. Gibt es eine Möglichkeit, im Falle eines Fehlers während der Übertragung ein Backup-Ziel anzugeben?

Antwort1

Ich glaube nicht, dass rsync integrierte Failover-Optionen oder spezielle Fehlerprotokollierung hat (außer dem, was auf stderr ausgegeben wird). Es hat zwar --log-file=Optionen --log-file-format=, aber diese konzentrieren sich auf die Protokollierung der aktualisierten Dateien, nicht auf Verbindungsfehler. Ich würde empfehlen, auf der Clientseite den Beendigungsstatus von rsync zu überprüfen und, wenn es sich um eine Fehlernummer handelt, die auf ein Verbindungsproblem hinweist (es sieht so aus, als ob 10, 12 und 30 die relevanten sind, aber durch Testen bekommen Sie eine bessere Vorstellung), nach einem anderen erreichbaren Server zu suchen und es erneut zu versuchen. Sie können auch die stderr-Ausgabe von rsync erfassen und diese entweder direkt protokollieren oder nach erkannten Fehlern durchsuchen und diese in Ihrem Protokoll zusammenfassen.

Wenn Sie auch serverseitig protokollieren möchten, würde ich ein Wrapper-Skript schreiben, das rsync normal ausführt ( rsync "$@"um Argumente weiterzuleiten), dann seinen Beendigungsstatus überprüft und diesen protokolliert. Stellen Sie sicher, dass Ihr Skript selbst nichts ausgibt (an stdout oder stderr), da es sonst den Remote-rsync-Client verwirren könnte.

verwandte Informationen