Hallo allesamt,
da man mit der VU+-Box so viele schöne Sachen machen kann, gibt es natürlich auch viele Wege, wie man etwas machen kann.
Meine Hardwarekonstellation ist folgendermaßen:
- Die VU+-Box hat eine (ausreichend große) Festplatte, auf die Aufnahmen lokal gespeichert werden.
- Über einen Cronjob wird ein Script ausgeführt, das überprüft, ob bereits abgeschlossene Aufnahmen am üblichen Aufnahmeort liegen.
- Das Script überprüft, ob mein NAS gerade aktiv ist (ich lasse es aus Energiespargründen 30 Minuten nach dem letzten Zugriff und bei zu wenig Prozessorlast automatisch herunterfahren) und fährt es ggf. via WOL hoch und mountet das korrekte Share anschließend
- Wenn das NAS und auch das Share erreichbar ist, wird die Aufnahme auf das NAS geschoben und die lokale Kopie auf der VU+ gelöscht
Alles anzeigen
Wer also eine ähnliche Konstellation hat, kann mein Script gerne als Basis verwenden. Verwendung ist allerdings auf eigene Gefahr, ich übernehme keine Gewähr, wenn Datenverlust (der eigentlich nicht auftreten sollte) auftritt. Es setzt auch die Installation von "lsof" und "busybox" voraus (und bricht auch mit entsprechender Fehlermeldung ab).
Grüsse,
Wolfgang
da man mit der VU+-Box so viele schöne Sachen machen kann, gibt es natürlich auch viele Wege, wie man etwas machen kann.
Meine Hardwarekonstellation ist folgendermaßen:
- Die VU+-Box hat eine (ausreichend große) Festplatte, auf die Aufnahmen lokal gespeichert werden.
- Über einen Cronjob wird ein Script ausgeführt, das überprüft, ob bereits abgeschlossene Aufnahmen am üblichen Aufnahmeort liegen.
- Das Script überprüft, ob mein NAS gerade aktiv ist (ich lasse es aus Energiespargründen 30 Minuten nach dem letzten Zugriff und bei zu wenig Prozessorlast automatisch herunterfahren) und fährt es ggf. via WOL hoch und mountet das korrekte Share anschließend
- Wenn das NAS und auch das Share erreichbar ist, wird die Aufnahme auf das NAS geschoben und die lokale Kopie auf der VU+ gelöscht
Shell-Script
- #!/bin/bash
- # Verzeichnisse
- BASEDIR=/media/hdd
- MOUNTDIR=/media/net/NAS
- DESTDIR=$MOUNTDIR/records
- # Zielserver
- SERVERIP=192.168.20.30
- SERVERMAC=bc:5f:f4:e9:d2:c7
- SERVERSHARE=video
- SERVERUSER=BENUTZERNAME
- SERVERPASS=PASSWORT
- # Programme
- LSOF=/usr/sbin/lsof
- BB=/bin/busybox
- WOL="$BB ether-wake"
- MOUNT=/bin/mount
- # Ueberpruefungen, ob alle benoetigten Verzeichnisse vorhanden sind und alle wichtigen Programme dabei sind
- if [ ! -x $LSOF ]; then
- echo "Bitte das Paket 'lsof' installieren"
- echo "opkg install lsof"
- exit 1
- fi
- if [ ! -x $BB ]; then
- echo "Bitte das Paket 'busybox' installieren"
- echo "opkg install busybox"
- exit 1
- fi
- if [ ! -d "$BASEDIR" ]; then
- echo "Das Aufnahmeverzeichnis $BASEDIR existiert nicht"
- exit 1
- fi
- if [ ! -d "$MOUNTDIR" ]; then
- echo "Das Netzwerkverzeichnis $MOUNTDIR existiert nicht"
- exit 1
- fi
- if [ ! -d "$DESTDIR" ]; then
- echo "Das Zielverzeichnis $DESTDIR existiert nicht"
- exit 1
- fi
- # And so it begins...
- WASMOUNTED=1
- if [ `$MOUNT | grep "$MOUNTDIR" | wc -l` -ne 1 ]; then
- WASMOUNTED=0
- # Das Verzeichnis ist nicht gemountet, also muss ein wenig geprueft werden
- while [ `ping -c 3 $SERVERIP | echo $1` -ne 0 ]; do
- # Die IP ist nicht anpingbar, also nun das Magic Paket schicken
- $WOL $SERVERMAC
- sleep 60
- done
- $MOUNT -t cifs -o user=$SERVERUSER,pass=$SERVERPASS \\$SERVERIP\$SERVERSHARE $MOUNTDIR || exit 1
- fi
- # Offene Dateien auslesen, die sich in $BASEDIR befinden und von der Box gerade gespeichert werden
- OPENFILES=`$LSOF $BASEDIR | grep enigma2`
- # Dateien auslesen, die sich in $BASEDIR befinden
- for i in $BASEDIR/*.ts; do
- # Nur Dateien anfassen, die gerade NICHT beschrieben werden
- if [ `echo $OPENFILES | grep "$i" | wc -l` -eq 0 ]; then
- if [ -e "$i" ]; then
- # Endung abschnippeln und Leerzeichen maskieren
- BASENAME=`echo "$i" | sed 's/\.ts$//' | sed 's/ /\\\\ /g'`.\*
- # Datei verschieben und im Falle des Erfolgs alle anderen dazugehoerigen Dateien auf der Box (nicht auf dem Netzwerkshare) loeschen
- mv "$i" $DESTDIR && rm $BASENAME
- fi
- fi
- done
- # Wenn das Verzeichnis vorher nicht gemountet war, soll es danach auch nicht gemountet sein
- if [ $WASMOUNTED -eq 0 ]; then
- umount $MOUNTDIR
- fi
- exit 0
Wer also eine ähnliche Konstellation hat, kann mein Script gerne als Basis verwenden. Verwendung ist allerdings auf eigene Gefahr, ich übernehme keine Gewähr, wenn Datenverlust (der eigentlich nicht auftreten sollte) auftritt. Es setzt auch die Installation von "lsof" und "busybox" voraus (und bricht auch mit entsprechender Fehlermeldung ab).
Grüsse,
Wolfgang