rsync loop until finish
rsyncRsync automatisch wiederholen, bis die Übertragung erfolgreich istwiederholen
Mit einerdieser while-Schleife kannwird ein fehlgeschlagener rsync-BefehlKopiervorgang automatischnach 60 Sekunden erneut ausgeführtgestartet.
Die Schleife endet erst,automatisch, wennsobald rsync erfolgreich abgeschlossen wurde.
Beispiel:
Diekann Dateienjederzeit ausmit /mnt/daten/backup/Strg + Csollen nach /mnt/backupplatte/server/ kopiertabgebrochen werden.
Komplette Rsync-Schleife
while true; do
rsync -rvPavP --append-verify -- \
/mnt/daten/backup/Source/ \
/mnt/backupplatte/server/Destination/
status=$?
if [ "$status" -eq 0 ]; then
echoprintf '%s: rsync wurde erfolgreich abgeschlossen.\n' \
"$(date '+%F %T'): Übertragung erfolgreich abgeschlossen."
break
fi
echoprintf '%s: rsync ist mit Exit-Code %s fehlgeschlagen. Neuer Versuch in 60 Sekunden.\n' \
"$(date '+%F %T'):" Übertragung fehlgeschlagen. Neuer Versuch in 60 Sekunden."$status"
sleep 60
done
Pfade anpassen
DieDer SchleifeQuellpfad kannist:
/mnt/Source/
Der Zielpfad ist:
/mnt/Destination/
Der abschließende Schrägstrich beim Quellpfad ist wichtig:
/mnt/Source/kopiert den Inhalt des Ordners./mnt/Sourcekopiert den OrdnerStrgSource+Cbeendet werden.Wie funktioniert die Schleife?rsyncstartet die Übertragung.selbst.Der Rückgabewert vonrsyncwird gespeichert.Bei Rückgabewert0war die Übertragung erfolgreich und die Schleife wird beendet.Bei einem Fehler wartet das Skript 60 Sekunden.Danach wirdrsyncerneut gestartet.
Erklärung der einzelnen BefehleSchleife
while true; do
Startet eine Endlosschleife. AllesAlle Befehle zwischen do und done wirdwerden wiederholt ausgeführt.
whilersync true;-avP
Startet
die Datenübertragung mit rsync
.
Kopiert
-aaktiviert den Archivmodus. Dabei werden unter anderem Berechtigungen, Zeitstempel undsynchronisiertsymbolischeDateienLinkszwischen zwei Verzeichnissen.rsync -rvP --append-verify -- \ /mnt/daten/backup/ \ /mnt/backupplatte/server/Der erste Pfad ist die Quelle:/mnt/daten/backup/Der zweite Pfad ist das Ziel:/mnt/backupplatte/server/Wichtig:Der Schrägstrich am Ende des Quellpfads bedeutet, dass derInhaltdes Verzeichnisses kopiert wird.-rKopiert Verzeichnisse und deren Unterverzeichnisse.erhalten.
-vZeigtzeigtwährendausführlichderan,ÜbertragungwelchezusätzlicheDateienInformationenverarbeitetan.werden.
-PZeigtzeigt den Fortschritt an und behältunvollständigeunvollständigDateienübertragenebei einem Abbruch.-Pentspricht:
Dateien.--partial --progress
--append-verify
Versucht, eineEine bereits teilweise übertragene Datei fortzusetzen. Danach wird geprüft,beim nächsten Versuch fortgesetzt. Anschließend überprüft rsync, ob die vollständigezusammengesetzte Datei korrekt übertragen wurde.ist.
Diese Option eignet sich besonders für große,große unveränderlicheDateien, Dateiendie wie:sich während der Übertragung nicht verändern.
FestplattenabbilderBackup-Archivekomprimierte DateienISO-Dateien
--
BeendetDas doppelte Minuszeichen beendet die ListeVerarbeitung dervon Optionen. Dadurch werden Datei- oder Verzeichnisnamen,Pfade, die mit einem Minuszeichen beginnen, nicht versehentlich als OptionBefehlsoption interpretiert.
\
Der umgekehrte Schrägstrich setzt einen Befehl in der nächsten Zeile fort. Er verbessert nur die Lesbarkeit.
Dieser Befehl:
rsync -rvP --append-verify -- \
/mnt/daten/backup/ \
/mnt/backupplatte/server/ist technisch identisch mit:
rsync -rvP --append-verify -- /mnt/daten/backup/ /mnt/backupplatte/server/
status=$?
Speichert den RückgabewertExit-Code des zuletzt ausgeführten Befehls in der Variable status.
status=$?Ein Rückgabewert von
- Exit-Code
0bedeutetbedeutet:Erfolg.erfolgreichJederabgeschlossen. - Ein
andereandererWertExit-Codeweistbedeutet:auf einenein Fehleroderisteine unvollständige Übertragung hin.aufgetreten.
if [ "$status" -eq 0 ]; then
Prüft, ob der gespeicherte Rückgabewert gleich 0rsyncist.
ifabgeschlossen [ "$status" -eq 0 ]; then-eq bedeutet „ist numerisch gleich“.wurde.
echoprintf
Gibt eine NachrichtMeldung immit Terminalaktuellem Datum und aktueller Uhrzeit aus.
echo "$(date '+%F %T'): Übertragung erfolgreich abgeschlossen."date '+%F %T'
Erzeugt einen Zeitstempel im folgenden Format:
2026-07-27 14:35:20Dabei steht:
%Ffür das Datum%Tfür die Uhrzeit
break
Beendet die Schleife, sobald rsync erfolgreich abgeschlossen wurde.war.
break
sleep 60
Wartet nach einem Fehler 60 Sekunden, bevor der nächste Versuch gestartet wird.
sleep 60Für eine Wartezeit von fünf Minuten Wartezeit kann stattdessender FolgendesWert verwendetbeispielsweise auf 300 geändert werden:
sleep 300
done
Markiert das Ende der Schleife. Wenn whilebreak-Schleife. nicht ausgeführt wurde, beginnt die Schleife anschließend erneut.
Schleife abbrechen
Die laufende Schleife kann im Terminal mit folgender Tastenkombination beendet werden:
doneStrg + C
Wichtiger Hinweis bei Ein-/Ausgabefehlern
Eine Meldung wie Input/outputdiese error deutetweist häufig auf ein Problem mit dem Datenträger, dem Dateisystem, demeinem Kabel, demeinem USB-Gehäuse oder dereiner VerbindungNetzwerkverbindung hin.hin:
Input/output error (5)
Die WiederholungsschleifeSchleife kannbehebt vorübergehendedie FehlerUrsache überbrücken.nicht. Sie repariertstartet jedochlediglich keinendie defektenÜbertragung Datenträgererneut. undBei keinwiederholten beschädigtes Dateisystem.
Nach einem solchen FehlerEin-/Ausgabefehlern sollten die letztenKernel-Meldungen Kernelmeldungen kontrolliertgeprüft werden:
journalctl -k -n 100 --no-pager
journalctl -k
DortZeigt sollteMeldungen besondersdes Linux-Kernels an. Dazu gehören unter anderem Fehler von Festplatten, USB-Geräten, Controllern und Dateisystemen.
-n 100
Begrenzt die Ausgabe auf Begriffedie wieletzten 100 Meldungen.
I/O error--no-pager,
resetGibt ata,die nvme,Meldungen usb,direkt ext4,im Terminal btrfsoderaus, ohne zfsgeachtetein werden.zusätzliches Anzeigeprogramm zu öffnen.