rsync Fehlercode 0?

jimb0p

Erfahrenes Mitglied
Hallo Zusammen,

ich habe folgendes shell Skript:

Code:
#!/bin/bash

umount /media/backup_intern/
mount UUID=5d234505-0b11-5ec0-9b23-550a6ade192f /media/backup_intern/
if [ "$?" -ne 0 ]
then
        mail -s "BACKUP ERROR: HDD konnte nicht gemountet werden" email@email.de <<< 'Fehler beim mounten der Festplatte!'
        echo "mount ERROR CODE: $?" >> logfiles/log_`date +\%Y\%m`.txt
        exit 1
fi
rsync -rltDvu --delete -b --backup-dir=/media/backup_intern/backup_delete --modify-window=1 --progress /media/daten/ /media/backup_intern/backup >> $
if [ "$?" -ne 0 ]
then
        mail -s "BACKUP ERROR: Fehler beim backuppen bitte Logfile checken" email@email.de <<< 'Fehler beim Erstellen des Backups!'
        echo "rsync ERROR CODE: $?" >> logfiles/log_`date +\%Y\%m`.txt
        umount /media/backup_intern/
        exit 1
else
        mail -s "BACKUP SUCCESS: Backup wurde erfolgreich erstellt" email@email.de <<< 'Alles erfolgreich!'
fi
umount /media/backup_intern/

Das funktionierte nun über ein Jahr problemlos bis ich auf einmal eine Email bekam mit einer Fehlermeldung. Im Logfile steht folgendes:

Code:
sending incremental file list
IO error encountered -- skipping file deletion
/Wiki/dokuwiki/lib/plugins/authpgsql/lang/pt-br/
/Wiki/dokuwiki/lib/plugins/authpgsql/lang/pt/
/Wiki/dokuwiki/lib/plugins/authpgsql/lang/ru/
/Wiki/dokuwiki/lib/plugins/authpgsql/lang/sk/
/Wiki/dokuwiki/lib/plugins/authpgsql/lang/sl/
/Wiki/dokuwiki/lib/plugins/authpgsql/lang/sv/
/Wiki/dokuwiki/lib/plugins/authpgsql/lang/tr/
/Wiki/dokuwiki/lib/plugins/authpgsql/lang/zh-tw/
/Wiki/dokuwiki/lib/plugins/authpgsql/lang/zh/

sent 3,989,296 bytes  received 19,969 bytes  8,207.30 bytes/sec
total size is 470,751,475,073  speedup is 117,415.90
rsync ERROR CODE: 0

Der Code 0 heißt aber laut Doku alles erfolgreich. Wo genau kann der Fehler sein?

Beste Grüße!
 
Hi,

das $? bezieht sich immer auf den Exitcode des letzten Befehls. Bei deinem Script oben bezieht sich dieser also auf deinen "mail -s"-Befehl, welcher anschienend erfolgreich durchgelaufen ist. Um auf den Exitcode von rsync zugreifen zu können, musst du dir den direkt nach dem "rsync" in Zeile 11 in einer Variable speichern (z.B.: "rsyncRet=$?").

Grüsse,
BK
 
Hi, danke für deine Antwort.

Es kommt mehrmals dieser Fehler für unterschiedliche Dateien:
Code:
rsync: readlink_stat("/media/backup_intern/backup/Wiki/dokuwiki/inc/lang/sr/stopwords.txt") failed: Input/output error (5)

und dieser:
Code:
rsync: recv_generator: mkdir "/media/backup_intern/backup/Wiki/dokuwiki/lib/plugins/authpgsql/lang/zh" failed: Input/output error (5)

und zum Abschluss dann:
Code:
*** Skipping any contents from this failed directory ***

und

Code:
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]

Habe es so aufgesplittet damit ich nicht den ganzen Log hier poste. Was könnte denn das Problem sein, denn dieses Verzeichnis existiert seit dem das Backupskript läuft.
 
fsck gibt schnell folgendes aus:

Code:
/dev/sdc1 enthält ein fehlerhaftes Dateisystem, Prüfung erzwungen.
Durchgang 1: Inodes, Blöcke und Größen werden geprüft
Lesefehler - Block 326631595 (Der Versuch, einen Block vom Dateisystem zu lesen, endete in kurzem Lesen) während beim Lesen des nächsten Inodes.
Fehler ignorieren<j>?

Habe an der Stelle mit STRG+C beendet weil ich nicht weiß wie man hier weiter vorgeht. Schaut nicht gut aus oder? Ist ne relativ neue Platte in ext4. Auf die Platte werden die Backups mit rsync gemacht.
 
Nein, schaut nicht gut aus.

Ist eine externe Platte, oder? Geht je nach Controller evt. nicht, aber versuch einmal die Smartwerte zu erfahren: smartmontools installieren (falls noch nicht, Paketname ist für die Debian-Sparte), und dann "smartctl -a /dev/sdc" als Root.

Außerdem dmesg.

(Evt. ist die Platte neu genug für Umtausch? Aber zuerst cleanen, random dd. Und dann evt. badblocks auch noch)
 
Zurück