Beitragsdatum | 19.07.2023 |
---|---|
Letzte Aktualisierung | 29.07.2023 |
Betrifft | rsync |
Bei einem lokalen rsync wurde mir nach einiger Laufzeit untypischerweise auf einmal ein Fehler angezeigt, der Job abgebrochen.
Aufruf von rsync wie folgt:
rsync -H -a -P --stats --delete-before /path/to/source/ /path/to/target/ # Nach einiger Laufzeit, da sehr(!) viele Dateien in diesem Pfad enthalten sind, kam immer wieder folgender Fehler: rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.3]
Eine genaue Ursache konnte ich nicht verifiziert ermitteln. Code 12 kann idR ausgelöst werden, wenn der Speicherplatz im Zielpfad zu knapp wird, die Version von rsync auf der Gegenseite nicht zur Version auf der Senderseite passt oder die Verbindung zur Gegenseite aufgrund von einem Timer und fehlendem Datenaustausch unterbrochen wird (idle). In diesem Fall konnten die beiden letzten Punkte nicht zutreffen, da ich lokal rsyncen wollte, also keine Verbindung zu einer Gegenseite aufgebaut hatte bzw. keine zwei rsync-Versionen im Einsatz waren.
Ich vermute inzwischen, dass der RAM-Speicher voll lief, da wirklich sehr viele Dateien verglichen werden müssen. Durch die Option --delete-before
muss rsync zuerst alle Dateien ermitteln und vergleichen, um dann Dateien zuerst löschen zu können.
Grund für diese Option: der Speicherplatz auf dem Zielverzeichnis könnte sonst zu knapp werden, wenn erst die neuen Daten gesichert und dann die alten Daten entfernt werden.
Ich ließ nach mehreren Versuchen und der Erhöhung der verbosity von rsync (Option -vv
) das --delete-before
aus der oben genannten Vermutung weg. Der RAM-Speicher des Servers war bereits ganz gut ausgelastet - hier könnte es evt. zu Problemen gekommen sein.
Ein Test ergab: jetzt läuft der rsync erstmal wieder durch.
Da nun aber die Dateien nicht zuerst gelöscht werden, könnte es evt. zu einem Problem bzgl. Speicherplatz kommen.
Eine gute Lösung wäre daher, den RAM-Speicher der Maschine zu erhöhen.
Update 29.07.2023:
Nach Aufrüstung des RAM funktioniert die speicherintensive Option --delete-before
wieder problemlos. Es lag höchstwahrscheinlich am RAM.
Quellen:
Ähnliche Themen im blog:
rsync