Issue 1 #1

Open
opened 2026-08-04 11:08:22 +02:00 by xcg5415 · 1 comment
Owner

Betroffen: Skript 1:
Der spezifische rsync-Fehler im Protokoll lautet:

rsync error: some files/attrs were not transferred (see previous errors) (code 23)

Details zu diesem Fehler:
Bedeutung von Code 23: Dieser Exit-Code besagt, dass rsync die Übertragung zwar abgeschlossen hat, aber einzelne Dateien oder Datei-Attribute nicht erfolgreich übertragen werden konnten.

Die konkrete Ursache im Log: Der Fehler wurde durch die beiden Dateisystem-Fehler (Invalid argument (22)) beim Benutzer paulc ausgelöst, weil das Zielsystem die Sonderzeichen in den Dateinamen (ITAL#303Y_MEAN_365.csv und ITA#303LY_365.csv) nicht verarbeiten konnte:
`rsync: recv_generator: failed to stat "...": Invalid argument (22)

FIX: Automatische Zeichensatz-Konvertierung (Empfohlen)
Sie können rsync anweisen, die Dateinamen während der Übertragung automatisch vom Quell-Zeichensatz (meistens UTF-8) in den Zeichensatz des Zielsystems (z. B. ISO-8859-1 / Latin-1) zu übersetzen.

Ergänzen Sie Ihren rsync-Befehl um den Parameter --iconv:

bash
rsync -av --iconv=utf-8,iso-8859-1 /quelle/ /ziel/
Wirkung: rsync übersetzt die ungültigen Zeichen im Dateinamen so, dass das Ziel-Dateisystem sie fehlerfrei schreiben kann.

Tipp: Falls die Quell-Dateien von einem Mac stammen, hilft oft --iconv=utf-8-mac,utf-8.

Betroffen: Skript 1: Der spezifische rsync-Fehler im Protokoll lautet: rsync error: some files/attrs were not transferred (see previous errors) (code 23) Details zu diesem Fehler: Bedeutung von Code 23: Dieser Exit-Code besagt, dass rsync die Übertragung zwar abgeschlossen hat, aber einzelne Dateien oder Datei-Attribute nicht erfolgreich übertragen werden konnten. Die konkrete Ursache im Log: Der Fehler wurde durch die beiden Dateisystem-Fehler (Invalid argument (22)) beim Benutzer paulc ausgelöst, weil das Zielsystem die Sonderzeichen in den Dateinamen (ITAL\#303Y_MEAN_365.csv und ITA\#303LY_365.csv) nicht verarbeiten konnte: `rsync: recv_generator: failed to stat "...": Invalid argument (22) FIX: Automatische Zeichensatz-Konvertierung (Empfohlen) Sie können rsync anweisen, die Dateinamen während der Übertragung automatisch vom Quell-Zeichensatz (meistens UTF-8) in den Zeichensatz des Zielsystems (z. B. ISO-8859-1 / Latin-1) zu übersetzen. Ergänzen Sie Ihren rsync-Befehl um den Parameter --iconv: bash rsync -av --iconv=utf-8,iso-8859-1 /quelle/ /ziel/ Wirkung: rsync übersetzt die ungültigen Zeichen im Dateinamen so, dass das Ziel-Dateisystem sie fehlerfrei schreiben kann. Tipp: Falls die Quell-Dateien von einem Mac stammen, hilft oft --iconv=utf-8-mac,utf-8.
Author
Owner

Methode 1: Fehlertolerante rsync-Optionen nutzen (Empfohlen)
Sie können rsync so konfigurieren, dass es bei IO- und Konvertierungsfehlern nicht hart abbricht, sondern fortfährt. Die Fehler werden dabei automatisch in das Standard-Benutzerlog geschrieben.

Passen Sie dazu das Skript /opt/bmi/1_syncFiles.sh an der Stelle an, an der rsync aufgerufen wird, und fügen Sie folgende Parameter hinzu:

bash
rsync --ignore-errors --skip-compress=csv ...
--ignore-errors: Zwingt rsync, das Löschen von Dateien und den Kopiervorgang fortzusetzen, selbst wenn I/O-Fehler (wie die Zeichensatzfehler) auftreten.

Ergebnis: Die defekten Dateien von paulc werden übersprungen, der restliche Kopiervorgang für ihn wird erfolgreich beendet und das Skript läuft für alle nachfolgenden Benutzer weiter. Die Fehler stehen wie gewohnt im Logfile unter /opt/bmi/log/bmi26/1_syncFiles/paulc/.

Methode 2: Automatisches Protokollieren übersprungener Dateien (Skript-Erweiterung)
Wenn Sie eine dedizierte Liste aller übersprungenen Dateien in einer separaten Log-Datei führen möchten, können Sie das Skript /opt/bmi/1_syncFiles.sh so erweitern, dass es die Fehler abfängt.

Suchen Sie im Skript nach dem rsync-Aufruf für die Benutzer und bauen Sie eine Weiche wie diese ein:

bash

Beispiel für den rsync-Aufruf im Skript:

rsync_output=$(rsync -av --iconv=utf-8,iso-8859-1 "$source" "$target" 2>&1)
rsync_ec=$?

if [ $rsync_ec -eq 23 ]; then
echo "[WARNING] Einige Dateien von $user konnten wegen Zeichensatzfehlern nicht kopiert werden." >> /var/log/bmi_sync_skipped_files.log

# Extrahiere die betroffenen Dateinamen aus der rsync-Ausgabe und schreibe sie ins Log
echo "$rsync_output" | grep -E "cannot convert|failed to stat" >> /var/log/bmi_sync_skipped_files.log

# Überschreibe den Exit-Code auf 0, damit Ansible nicht abbricht
rsync_ec=0

fi

Methode 1: Fehlertolerante rsync-Optionen nutzen (Empfohlen) Sie können rsync so konfigurieren, dass es bei IO- und Konvertierungsfehlern nicht hart abbricht, sondern fortfährt. Die Fehler werden dabei automatisch in das Standard-Benutzerlog geschrieben. Passen Sie dazu das Skript /opt/bmi/1_syncFiles.sh an der Stelle an, an der rsync aufgerufen wird, und fügen Sie folgende Parameter hinzu: bash rsync --ignore-errors --skip-compress=csv ... --ignore-errors: Zwingt rsync, das Löschen von Dateien und den Kopiervorgang fortzusetzen, selbst wenn I/O-Fehler (wie die Zeichensatzfehler) auftreten. Ergebnis: Die defekten Dateien von paulc werden übersprungen, der restliche Kopiervorgang für ihn wird erfolgreich beendet und das Skript läuft für alle nachfolgenden Benutzer weiter. Die Fehler stehen wie gewohnt im Logfile unter /opt/bmi/log/bmi26/1_syncFiles/paulc/. Methode 2: Automatisches Protokollieren übersprungener Dateien (Skript-Erweiterung) Wenn Sie eine dedizierte Liste aller übersprungenen Dateien in einer separaten Log-Datei führen möchten, können Sie das Skript /opt/bmi/1_syncFiles.sh so erweitern, dass es die Fehler abfängt. Suchen Sie im Skript nach dem rsync-Aufruf für die Benutzer und bauen Sie eine Weiche wie diese ein: bash # Beispiel für den rsync-Aufruf im Skript: rsync_output=$(rsync -av --iconv=utf-8,iso-8859-1 "$source" "$target" 2>&1) rsync_ec=$? if [ $rsync_ec -eq 23 ]; then echo "[WARNING] Einige Dateien von $user konnten wegen Zeichensatzfehlern nicht kopiert werden." >> /var/log/bmi_sync_skipped_files.log # Extrahiere die betroffenen Dateinamen aus der rsync-Ausgabe und schreibe sie ins Log echo "$rsync_output" | grep -E "cannot convert|failed to stat" >> /var/log/bmi_sync_skipped_files.log # Überschreibe den Exit-Code auf 0, damit Ansible nicht abbricht rsync_ec=0 fi
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
xcg5415/bmi#1
No description provided.