Skip to main content

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.

werden.

Die Schleife endet erst,automatisch, wennsobald rsync erfolgreich abgeschlossen wurde.

Beispiel:

Sie

Diekann Dateienjederzeit ausmit /mnt/daten/backup/Strg + C sollen 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:

jederzeit
/mnt/Source/
mit

Der Zielpfad ist:

/mnt/Destination/

Der abschließende Schrägstrich beim Quellpfad ist wichtig:

  • /mnt/Source/ kopiert den Inhalt des Ordners.
  • /mnt/Source kopiert den Ordner StrgSource + C beendet werden.

    Wie funktioniert die Schleife?

    1. rsync startet die Übertragung.selbst.
    2. Der Rückgabewert von rsync wird gespeichert.
    3. Bei Rückgabewert 0 war die Übertragung erfolgreich und die Schleife wird beendet.
    4. Bei einem Fehler wartet das Skript 60 Sekunden.
    5. Danach wird rsync erneut 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

do

Startet

die Datenübertragung mit rsync

.

Kopiert

  • -a aktiviert den Archivmodus. Dabei werden unter anderem Berechtigungen, Zeitstempel und synchronisiertsymbolische DateienLinks zwischen 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 der Inhalt des Verzeichnisses kopiert wird.

    -r

    Kopiert Verzeichnisse und deren Unterverzeichnisse.

    erhalten.

  • -v

    Zeigtzeigt währendausführlich deran, Übertragungwelche zusätzlicheDateien Informationenverarbeitet an.

    werden.

  • -P

    Zeigtzeigt den Fortschritt an und behält unvollständigeunvollständig Dateienübertragene bei einem Abbruch.

    -P entspricht:

    --partial --progress
    Dateien.

--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.

  • Festplattenabbilder
  • Backup-Archive
  • komprimierte Dateien
  • ISO-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 0 bedeutetbedeutet: Erfolg.erfolgreich Jederabgeschlossen.
  • Ein andereanderer WertExit-Code weistbedeutet: auf einenein Fehler oderist eine unvollständige Übertragung hin.aufgetreten.

if [ "$status" -eq 0 ]; then

Prüft, ob der gespeicherte Rückgabewert gleich 0rsync ist.

erfolgreich
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:20

Dabei steht:

  • %F für das Datum
  • %T fü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 60

Fü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,

reset,

Gibt ata,die nvme,Meldungen usb,direkt ext4,im btrfsTerminal oderaus, zfsohne geachtetein werden.zusätzliches Anzeigeprogramm zu öffnen.