rsync broken pipe
rsync broken pipe
Hallo, ich bin nach wie vor dabei, ein Backup über Internet zu fahren und stoße auf Probleme hinsichtlich abgebrochener Verbindungen.
Tag 11 > Backup ok
Tag 12 > Backup ok
Tag 13 > broken pipe, Ordner sind teilweise leer
Tag 14 > Rsync fängt an, alle fehlenden Daten von Tag 13 nochmal neu zu schreiben/synchronisieren, anstatt Ordner 12 bzw. irgendein vorhandenes Vollbackup zu berücksichtigen
Was kann man dagegen tun?
Tag 11 > Backup ok
Tag 12 > Backup ok
Tag 13 > broken pipe, Ordner sind teilweise leer
Tag 14 > Rsync fängt an, alle fehlenden Daten von Tag 13 nochmal neu zu schreiben/synchronisieren, anstatt Ordner 12 bzw. irgendein vorhandenes Vollbackup zu berücksichtigen
Was kann man dagegen tun?
Re: rsync broken pipe
Sein Script entsprechend anpassen.
Re: rsync broken pipe
Wie macht man in einem Script klar, dass letzte "richtige" Verzeichnis zum Abgleich zu benutzen? Rsync kann schlecht wissen, wo es ein Broken Pipe gab.
Meine Idee wäre inzwischen, das Backup mehrmals über den Tag verteilt anzuschupsen.
Was meinst du?
Meine Idee wäre inzwischen, das Backup mehrmals über den Tag verteilt anzuschupsen.
Was meinst du?
Re: rsync broken pipe
Du kannst den Rückgabewert von rsync nutzen, um festzustellen, ob rsync erfolgreich durchgelaufen ist, z.B.:
Code: Alles auswählen
#!/bin/sh
while ! \
rsync [diverse Optionen]
do
sleep 60
echo "retrying"
done
Re: rsync broken pipe
Meine Scriptkenntnisse sind nicht sonderlich. Ich nehme ein bereits Fertiges. Kannst du mir sagen, an welcher Stelle man das einfügen könnte?MSfree hat geschrieben:14.11.2018 08:51:47Du kannst den Rückgabewert von rsync nutzen, um festzustellen, ob rsync erfolgreich durchgelaufen ist, z.B.:Code: Alles auswählen
#!/bin/sh while ! \ rsync [diverse Optionen] do sleep 60 echo "retrying" done
http://nopaste.debianforum.de/40483
Re: rsync broken pipe
Zeilen 62, 69 und 76 beinhalten jeweils die eigentlichen rsync-Aufrufe in der Form:
Achtung, die Zeilen unterscheiden sich im Detail! Also bitte nicht folgenden Block per Copy-n-Paste blind übernehmen.
Diese drei Blöcke könntest du nach dem Schema
umbauen.
Durch das Neustarten von rsync im Fehlerfall kann man sich die Fehlerbehandlung sparen. Der einzige Knackpunkt dabei ist, daß rsync theoretisch in eine Endlosschleife sacken könnte, wenn die wiederholten Versuche immer wieder fehlschlagen. Ich verwende diese Konstruktion aber inzwischen midestens 10 Jahre und hatte damit bisher keine Probleme. "retrying" kommt bei mir alle 3-4 Monate einmal vor, und mehr als 3 "retrying" habe ich noch nicht gesehen.
Im Prinzip könnte man noch die Zahl der Neuversuche hochzählen und einen Schwellwert einbauen, nach dem endgültig aufgegeben wird, damit es keine Endlosschleife gibt.
Auch die Wartezeit zwischen zwei Versuchen (sleep 60) kann man ein wenig runtersetzen. In meinem Fall (rsync über Internet) haben sich 60 Sekunden bewährt, im LAN kann man auch mit vielleicht 3-5 Sekunden auskommen.
Code: Alles auswählen
$RSYNC -e "$S" -avR "$FROMSSH:\"$SOURCE\"" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
Diese drei Blöcke könntest du nach dem Schema
Code: Alles auswählen
while ! \
$RSYNC -e "$S" -avR "$FROMSSH:\"$SOURCE\"" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC >> $LOG 2>&1
do
sleep 60
echo "retrying" >> $LOG
done
Durch das Neustarten von rsync im Fehlerfall kann man sich die Fehlerbehandlung sparen. Der einzige Knackpunkt dabei ist, daß rsync theoretisch in eine Endlosschleife sacken könnte, wenn die wiederholten Versuche immer wieder fehlschlagen. Ich verwende diese Konstruktion aber inzwischen midestens 10 Jahre und hatte damit bisher keine Probleme. "retrying" kommt bei mir alle 3-4 Monate einmal vor, und mehr als 3 "retrying" habe ich noch nicht gesehen.
Im Prinzip könnte man noch die Zahl der Neuversuche hochzählen und einen Schwellwert einbauen, nach dem endgültig aufgegeben wird, damit es keine Endlosschleife gibt.
Auch die Wartezeit zwischen zwei Versuchen (sleep 60) kann man ein wenig runtersetzen. In meinem Fall (rsync über Internet) haben sich 60 Sekunden bewährt, im LAN kann man auch mit vielleicht 3-5 Sekunden auskommen.
Re: rsync broken pipe
Herzlichen Dank erstmal!
Re: rsync broken pipe
Kurze Rückmeldung:
Das Script läuft mit den Anpassungen nun seit 6 Tagen hervorragend durch und hat bereits gegen einen Verbindungsabbruch geholfen. Ich kann es somit empfehlen. Danke nochmals!
Das Script läuft mit den Anpassungen nun seit 6 Tagen hervorragend durch und hat bereits gegen einen Verbindungsabbruch geholfen. Ich kann es somit empfehlen. Danke nochmals!