Beim Verschieben gibt es das Problem, dass wenn man eine Aufnahme abbricht und danach nochmal aufnimmt, würde VDR normalerweise eine 00002.ts statt einer 00001.ts im gleichen Verzeichnis anlegen. Da letztere aber verschoben wurde, legt VDR ein neues Verzeichnis auf dem Stick an, mit einer 00001.ts drin. Und das Verschieben scheitert, weil das alles auf dem Server schon existiert. Schwieriger als ich dachte.
Das ist das Script bisher: #!/bin/sh
case "$1" in
after)
svdrpsend.sh "MESG Aufnahme beendet, verschiebe auf den Server..." >/dev/null
TARGETDIR=`dirname "${2//\/tv\//\/tv\/Server\/}"`
mkdir -p "$TARGETDIR" >/dev/null
mv "$2" "$TARGETDIR" >/dev/null
if [ $? != "0" ]; then
svdrpsend.sh "MESG FEHLER während des Verschiebens!" >/dev/null
else
svdrpsend.sh "MESG Verschieben der Aufnahme beendet." >/dev/null
fi
touch /data/tv/.update
;;
esac
An der Stelle müsste man das wohl mit dem mergerfs so machen, wie du weiter oben beschrieben hast. Dann würde der VDR das erkennen?
EDIT: Das geht auch nicht. Selbst wenn man mergerfs beibringen kann, dass das Schreiben auf ein bestimmtes Dateisystem erfolgen soll, würde der VDR ja immer da drauf schreiben. Also auch die resume, oder beim Verschieben in Unterordner per OSD. Das würde dann alles auf dem Stick landen, selbst wenn es vorher schon auf dem Server lag.
EDIT: Könnte doch gehen. Mit der Mountoption category.create=eplfs
statt der MLD-default category.create=epmfs
nutzt mergerfs für "create, mkdir, mknod, symlink" das Dateisystem mit dem geringsten freien Speicher (vs. MLD-default meisten freien Speicher), welches dann der USB-Stick sein wird. Alle anderen Dateioperationen finden auf dem Dateisystem statt, auf dem sich die Datei bereits befindet. Das ist genau das, was ich brauche. Jetzt muss ich nur noch herausfinden, wie ich aus $2 (dem Aufnahmeverzeichnis, so wie es der VDR sieht, sprich "/data/tv/'name'/'datum'.rec") die Pfade für die Mountpoints generiere. Es muss "/data/" durch "/mnt/'uuid'" ersetzt werden.