rsync gibt im Fehlerfall nichts zurück

rsync gibt im Fehlerfall nichts zurück

Ich führe ein Backup-Skript aus einer Udev-Regel aus. Das Skript mountet und kopiert Daten mithilfe von rsync auf ein neu angeschlossenes USB-Laufwerk.

# Mounting stuff

MOUNTPOINT=/media/backup
export OUTPUT=/tmp/rsync-output.log

# -a does not work on exFAT partitions, because of permissions, groups, owner. Use -rltD instead of -rlptgoD, which -a would imply.
rsync -rltDv --exclude '*.app' --exclude-from=/home/gauthier/rsync-exclude.txt /home/gauthier/ $MOUNTPOINT/gauthier/ > $OUTPUT 2>&1

touch /home/gauthier/tmp/I_came_here

rsyncstartet, wie gezeigt durch /tmp/rsync-output.log:

gauthier@ionian:~/tmp $ tail /tmp/rsync-output.log
rsync: symlink "/media/backup/gauthier/code/wine64/loader/wine" -> "/home/sandbox/wine3264/loader/wine" failed: Function not implemented (38)
rsync: symlink "/media/backup/gauthier/code/wine64/loader/wine-preloader" -> "/home/sandbox/wine3264/loader/wine-preloader" failed: Function not implemented (38)
rsync: symlink "/media/backup/gauthier/code/wine64/po/LINGUAS" -> "../../wine/po/LINGUAS" failed: Function not implemented (38)
rsync: symlink "/media/backup/gauthier/code/wine64/tools/l_intl.nls" -> "../../wine/tools/l_intl.nls" failed: Function not implemented (38)
rsync: symlink "/media/backup/gauthier/code/wine64/tools/winegcc/winecpp" -> "winegcc" failed: Function not implemented (38)
rsync: symlink "/media/backup/gauthier/code/wine64/tools/winegcc/wineg++" -> "winegcc" failed: Function not implemented (38)

sent 30,239,649,237 bytes  received 237,923 bytes  18,123,995.90 bytes/sec
total size is 206,189,220,918  speedup is 6.82
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]

aber die Datei /home/gauthier/tmp/I_came_here, die von erstellt werden sollte, touchist nicht da. Nach dem kommt noch anderes Zeug touch, das anscheinend auch nicht ausgeführt wird.

rsyncEs soll trotz der Fehler nicht zurückgegeben werden? Was könnte dazu führen, dass es nicht zurückgegeben wird?

Ich habe versucht, das Skript über die Bash-Eingabeaufforderung auszuführen (anstatt es über die Udev-Regel ausführen zu lassen), und dann scheint es durchzugehen und danach fortzufahren rsync.


Vollständiges Skript:

#!/bin/bash
#export DISPLAY=:0
export XAUTHORITY=~/.Xauthority

xmessage -buttons abort -default abort -center -timeout 10 "Starting backup. Press enter to abort."
ANSWER=$?

if [ $ANSWER -eq 101 ] ; then
    xmessage -timeout 3 "Aborted!"
    exit
fi

if [[ ! -L /dev/backup_external_hd ]] ; then
    xmessage "External disk not present at /dev/backup_external_hd, aborting backup."
    exit
fi

MOUNTPOINT=/media/backup

sudo mkdir -p $MOUNTPOINT
sudo mount /dev/backup_external_hd $MOUNTPOINT

if ! grep "$MOUNTPOINT" /proc/mounts ; then
    xmessage "Failed to mount $MOUNTPOINT!"
    rmdir $MOUNTPOINT
    exit
fi

export OUTPUT=/tmp/rsync-output.log

# -a does not work on exFAT partitions, because of permissions, groups, owner. Use -rltD instead of -rlptgoD, which -a would imply.
rsync -rltDv --exclude '*.app' --exclude-from=/home/gauthier/rsync-exclude.txt /home/gauthier/ $MOUNTPOINT/gauthier/ > $OUTPUT 2>&1

touch /home/gauthier/tmp/I_came_here
xmessage "AAAAyyye"

# Pop up a result window
# Get a summary
export RESULT_MESSAGE=/tmp/rsync-result.txt
echo "Backup result:" > $RESULT_MESSAGE
echo "" >> $RESULT_MESSAGE    # \n does not seem to work in echo strings
tail -3 $OUTPUT >> $RESULT_MESSAGE
echo "" >> $RESULT_MESSAGE
echo "" >> $RESULT_MESSAGE
echo "Details in $OUTPUT" >> $RESULT_MESSAGE
xmessage -file $RESULT_MESSAGE

# Apparently unmounting too fast after writing could be a problem.
sleep 1

sudo umount $MOUNTPOINT

if grep "$MOUNTPOINT" /proc/mounts ; then
    xmessage "Could not unmount $MOUNTPOINT."
    exit
fi

sudo rmdir $MOUNTPOINT

verwandte Informationen