Ich verwende yaVDR 0.7 mit vdr-2.4.7-patch (Wegen menuselection-Patch) und mein Skript um Aufnahmen auf eine externe USB-Platte zu kopieren, da ich oft welche mitnehme...
Beim kopieren mit dem Skript klappt es manchmal nicht und ich bekomme sowohl mit cp als auch mit rsync eine Fehlermeldung.
Code
Mai 17 11:12:19 vdr01 yaVDR_7183_1609[7189]: /_config/bin/copy2usb.sh <START>
Mai 17 11:12:19 vdr01 yaVDR_7183_1609[7191]: /_config/bin/copy2usb.sh Kopiere /video/Home_Economics/Drei_Kugeln_Eis_$_6,39__>
Mai 17 11:12:19 vdr01 yaVDR_7183_1609[7194]: /_config/bin/copy2usb.sh <END>
...
Mai 17 11:12:25 vdr01 vdr[1609]: [1609] info: FEHLER beim kopieren von 'Home Economics / Drei Kugeln Eis $ 6,39 (S01E04)'
Das Skript:
Bash
#!/bin/bash
# ---
# copy2usb.sh
# Wird aufgerufen, wenn man im VDR Aufnahmen auf USB kopiert
# ---
# VERSION=220517
source /_config/bin/yavdr_funcs.sh
LIMIT=$((25*1024)) # Begrenzung beim Kopieren via USB (kb/s)
: "${VIDEO:=/srv/vdr/video}" # Vorgabe, falls $VIDEO leer ist
CP2USB='/tmp/~cp2usb.sh' # Temporäres Skript
[[ "${VIDEO: -1}" != '/' ]] && VIDEO+='/'
# Video- und Aufnahme-Verzeichnis abschneiden
TITLE="${1%/*}" ; TITLE="${TITLE#*$VIDEO}"
TITLE="${TITLE//_/ }" # Alle _ durch Leerzeichen ersetzen
TITLE="${TITLE//'/'/' / '}" # / durch " / " ersetzen
TITLE="${TITLE//'~'/'/'}" # ~ durch / ersetzen
# Sonderzeichen übersetzen
while [[ "${TITLE//#}" != "$TITLE" ]] ; do
tmp="${TITLE#*#}" ; char="${tmp:0:2}"
printf -v ch '%b' "\x${char}" # ch="$(echo -e "\x$char")"
OUT+="${TITLE%%#*}${ch}" ; TITLE="${tmp:2}"
done
TITLE="${OUT}${TITLE}"
if [[ -e "${1}/.timer" ]] ; then # Prüfen ob Aufnahme noch läuft
f_logger "Recording $1 still running! Aborting!"
svdrpsend MESG "Aufnahme \"${TITLE}\" läuft noch. Abbruch!"
exit 1
fi
IFS=' ' read -r -a TARGET_MOUNT <<< "$(grep -m 1 ' /media/vdr' /proc/mounts)" # /dev/sdb1 /media/vdr/USB_HD ext4 rw 0 0
TARGET="${TARGET_MOUNT[1]}" # /media/vdr/USB_HD
if [[ -n "$TARGET" && -d "$TARGET" && -n "$1" && -d "$1" ]] ; then
TD="${1%/*}" # "$(dirname "$1")"
TARGET_DISK="${TARGET/'/media/vdr/'}" # USB_HD
f_logger "Kopiere $1 nach $TARGET"
{ echo '#!/bin/bash'
echo "mkdir --parents \"${TARGET}${TD}\""
echo "svdrpsend MESG \"Kopiere '${TITLE}' nach [${TARGET_DISK}]${VIDEO}\""
#echo "if ionice -c 3 cp --recursive --force \"$1\" \"${TARGET}${TD}\" ; then"
echo "if rsync --archive --bwlimit=${LIMIT} \"$1\" \"${TARGET}${TD}\" ; then"
echo " svdrpsend MESG \"'${TITLE}' wurde nach [${TARGET_DISK}]${VIDEO} kopiert\""
echo 'else'
echo " svdrpsend MESG \"FEHLER beim kopieren von '${TITLE}'\""
echo 'fi'
echo "touch ${VIDEO}.update"
} > "$CP2USB"
screen -dm sh -c "sh $CP2USB" # Temporäres Skript starten
else
f_logger -s "Illegal parameter <${1}> or no usb drive found!"
svdrpsend MESG "Ungültiger Parameter <${1}> oder kein USB-Laufwerk gefunden!"
fi
Alles anzeigen
Wenn ich die Aufnahme aber im Terminal mit mc kopiere, klappt es!
Was kann das sein? Liegt es am Benutzer vdr? Weil mit sudo mc kann ich es ja kopieren...