TV-Aufnahmen vom Enigma2-Receiver automatisch archivieren

IM EINSATZ?

Dann schau dir UNSEREN LOXKURS an und profitiere von unserem Wissen!

Seit einiger Zeit bin ich nun glücklicher Besitzer einer VU+ Solo 4k, die dank JESS-Multischalter insgesamt acht unabhängige SAT-Tuner zur Verfügung stellt (alle Infos). Da nun im Grunde fast unbegrenzt viele gleichzeitige Aufnahmen möglich sind, kommt der Autotimer noch häufiger zum Einsatz, was die installierte 500 GB große SSD entsprechend schnell mit Daten füllt.

Damit jedoch immer genug Speicherplatz zur Verfügung steht, musste ein Bash-Script her, um Aufnahmen automatisch auf eine externe  HDD (bzw. NAS) auszulagern. Wie diese Archivierung im Detail funktioniert, ist Inhalt der nachfolgenden Anleitung.

Genug (externen) Speicherplatz vorsehen

In diesem Beispiel wird eine taufrische VU+ Solo 4k (Affiliate-Link) mit aktuellem VTi-Team-Image 9.0.2 eingesetzt. Nachfolgende Anleitung lässt sich aber vermutlich auch auf fast jeder Enigma2-basierten Settop-Box (Dreambox oder Ähnliches) umsetzen.

Wie schon im Artikel VU+ Solo 4K und JESS-Multischalter – Acht unabhängige Sat-Tuner über ein Kabel angesprochen, ist eine Samsung 850 500 GB (Affiliate-Link) installiert, um erstmal intern Speicherplatz für neue Aufnahmen bereitzuhalten.

Der Grund für den Einsatz der SSD ist schlicht, dass sie aus dem Standby ohne Verzögerung aufwacht und als positiver Nebeneffekt nochmal deutlich weniger Strom verbraucht als eine vergleichbare 2,5″ HDD. Das ist nicht nur für gerade startende Aufnahmen praktisch, sondern beschleunigt vorallem auch den Zugriff auf die Aufnahmeliste, welche im Vergleich zur HDD in einem Bruchteil der Zeit lädt. Sicherlich Luxus, da man sich auch einige Sekunden gedulden kann, einmal im Einsatz, möchte man den Speed-Boost aber nicht mehr missen.

Leider sind SSDs im Vergleich zu gewöhnlichen HDDs jedoch immer noch kostspieliger, weshalb Aufnahmen irgendwann (eher früher als später) auf eine externe Festplatte (oder ein NAS) ausgelagert werden müssen. Gerade HD-Aufnahmen verbraten hier oftmals 10 GB und mehr pro Stunde, sodass auch der Speicherplatz einer 500 GB fassenden SSD schnell aufgebraucht ist.

Hier kommt das nachfolgende Bash-Script zum Einsatz, welches die SDD einmal pro Tag untersucht und ältere Aufnahmen automatisch auf eine am Receiver extern angeschlossene USB-Platte verschiebt, sofern der Speicherplatz der internen SSD langsam zur Neige geht. Eingesetzt wird dazu eine 2,5″ HDD von Toshiba mit 3TB (Affiliate-Link), welche bereits vorher als Datengrab für TV-Recordings eingesetzt wurde.

VUPlus mit Archiv-HDD

Wer auf “Nummer-Sicher” gehen will, kann aber natürlich auch direkt eine massive 8TB HDD von Seagate (Affiliate-Link) einsetzen, welche in einer Inateck USB-Dockingstation (Affiliate-Link) untergebracht werden kann. Die Platte kann ich für derartige Backups nur empfehlen, da der Preis pro GB derzeitig unschlagbar ist. Diese sollte dann insbesondere auch exzessiven Aufnahmefetischisten erstmal genügend Reserven bieten.

Archivierungs-Script downloaden

Mein fertiges Script archive.zip (20660 Downloads ) kann direkt heruntergeladen werden. Damit es aber nicht erst auf den Rechner geladen und entpackt werden muss, um danach fummelig per FTP auf dem Enigma2-Receiver übertragen zu werden, kann es auch direkt per wget vom Receiver aus gedownloaded werden. Dazu wird erstmal eine Terminalverbindung zum Receiver aufgebaut:

ssh root@192.168.3.148

Die IP-Adresse 192.168.3.148 muss natürlich jeder entsprechend anpassen. Ein Standardpasswort existiert bei einer VTi-basierten Box nicht (kann bei anderen Images abweichen). Mit dem Befehl

wget https://meintechblog.de/download/archive.tar -O /etc/tuxbox/config/archive.tar

wird das tar-gepackte Script vom meintechblog-Server heruntergeladen und mit

tar -xf /etc/tuxbox/config/archive.tar

entpackt. Damit das Script ausführbar ist, wird noch

chmod +x /etc/tuxbox/config/archive.sh

eingegeben.

Archivierungs-Script anpassen und starten

Im Grunde kann das Script jetzt bereits gestartet werden, wobei die Ordnerstruktur erst noch geprüft und evtl. angepasst werden sollte.

Aufnahmeordner der SSD: Standardmäßig wird der Ordner /media/hdd/movie/” als Quelle (source) auf neue Aufnahmen geprüft.

Archivierungsordner der HDD: Als Ziel (destination) wird dann der Ordner “/media/hdd2/archive/” für die dauerhafte Sicherung herangezogen.

Die jeweils ältesten Aufnehmen werden dann der Reihe nach solange vom Quell- ins Zielverzeichnis verschoben, bis das Quelllaufwerk wieder mehr als 100 GB (100000000 kB) freien Speicher aufweist.

Wer hier Änderungen am Script vornehmen möchte, kann den vi-Editor benutzen, der jedoch gerade für Anfänger alles andere als einfach zu handhaben ist. Mit nachfolgender Anleitung sollte es aber auch Einsteigern möglich sein, die notwendigen Änderungen an den betroffenen Verzeichnissen vornehmen zu können.

Mit dem Befehl

vi /etc/tuxbox/config/archive.sh

wird das Script mit dem vi-Texteditor geöffnet.

Damit Änderungen vorgenommen werden können, muss erstmal vom Befehlsmodus in den Schreibmodus gewechselt werden. Dies geschieht durch einen Druck auf die Taste i. Hat der Wechsel in den Schreibmodus geklappt, wird ganz links unten ein großes I angezeigt und die gewünschten Einstellungen können angepasst werden:

source_root="media"
source_volume="hdd"
source_folder="movie"

destination_root="media"
destination_volume="hdd1"
destination_folder="archive"

source_freespace_minimum="100000000" #kB -> entspricht 100GB

Vermutlich muss – wenn überhaupt – nur das “destination_volume” angepasst werden, da die Angaben zur “source” mit großer Wahrscheinlichkeit bereits stimmen.

Sobald die Änderungen vorgenommen wurden, wird mit der Taste Esc (Escape) vom Schreibmodus zurück in den Befehlsmodus gewechselt. Jetzt wird links unten statt I wieder ein – angezeigt.

Um die Datei zu speichern und den vi-Editor zu verlassen, wird die Tastenfolge :wq eingegeben und mit Enter bestätigt. Möchte man die Änderungen doch nicht speichern, gibt man stattdessen :q! ein.

Manuell gestartet wird das Script dann mit dem Befehl:

/etc/tuxbox/config/archive.sh

Sofern etwas schief laufen sollte, gibt das Script direkt Rückmeldung, was gerade das Problem ist.

Dazu sind einige weitere Abfragen eingebaut, die den Dauereinsatz sicherstellen sollen. Dazu gehören bspw. auch Prüfungen, ob das Quellverzeichnis und das Zielvolume tatsächlich existieren und ob Aufnahmen bereits abgeschlossen sind. Denn nur in diesem Fall macht es auch Sinn, Aufzeichnungen zu verschieben, laufende Aufnahmen werden übersprungen. Sollte das Zielvolume zwar vorhanden sein, das Zielverzeichnis jedoch fehlen, wird dieses bspw. auch automatisch angelegt.

Klingt alles trivial, ist in Summe aber schon etwas komplexer. Gerade die Reihenfolge der Abfragen ist bspw. auch so gewählt, dass auf das Ziel erst dann zugegriffen und damit die Ziel-Festplatte aus dem Tiefschlaf geweckt wird, sofern auch tatsächlich ein Archivierungsbedarf (Quellvolume voll) vorhanden ist.

Auch werden keine Daten mehr archiviert, sofern das Zielvolume voll ist. In diesem Fall wird mit dem im Script integrierten Befehl

wget -O - -q 'http://127.0.0.1/web/message?type=2&text=Archivierung%20gescheitert%2C%20da%20nicht%20genug%20Speicherplatz%20vorhanden' >/dev/null 2>&1

auch eine passende Bildschirmnachricht angezeigt, damit man darüber informiert wird, dass wieder Speicherplatz freigeräumt werden sollte.

Archivierung gescheitert da nicht genug Speicherplatz vorhanden

Wer die Nachricht anpassen möchte, muss darauf achten, dass der Text URL-codiert ist. Dazu kann der Dienst url-encoder.de genutzt werden.

Weiterhin könnte man evtl. auch noch zusätzliche Benachrichtigungen einbauen, um bspw. auch FHEM darüber zu informieren und dann das “Smart Home” als Signalgeber (blinkendes Licht oder was auch immer) zu nutzen. Mal sehen, vielleicht füge ich diese Funktion zu einem späteren Zeitpunkt noch hinzu. Aktuell bin ich mit der Bildschirminfo aber schon ganz glücklich.

Ausführung des Scripts automatisieren

Wirklich spannend ist das Ganze natürlich erst dann, wenn das Archivierungs-Script regelmäßig ausgeführt wird, was sich über den Crontab realisieren lässt.

Dazu wird der Befehl

vi /etc/cron/crontabs/root

ausgeführt (alternativ “crontab -e” – ohne Anführungszeichen) und der Eintrag

0 11 * * * /etc/tuxbox/config/archive.sh

ergänzt. Da es sich wie oben um den vi-Editor handelt, muss vor dem Einfügen erst mit der Taste i in den Schreibmodus gewechselt werden. Nach dem Hinzufügen des Eintrags dann wieder mit Esc zurück in den Befehlsmodus und :wq (Speichern und Beenden) und mit Enter bestätigen.

0 11 * * *

bedeutet übrigens, dass das Script einmal pro Tag um 11:00 Uhr ausgeführt wird. Hier könnte man natürlich auch die Frequenz erhöhen, in der Praxis sollte es in dieser Form aber ausreichend sein. Wer möchte, kann das Script aber bspw. auch mit

*/30 * * * *

alle 30 Minuten ausführen lassen.

Jedoch kann es dann zu Problemen kommen, sobald das Script gestartet wird, im Hintergrund aber gerade immer noch Dateien verschoben werden. Dieses Problem lässt sich natürlich auch mit etwas Code lösen, aber wie gesagt, reicht es aus, wenn das Script einmal pro Tag ausgeführt wird. Eine Ausführung um 11 Uhr hat dann auch den Vorteil, dass vermutlich in dieser Zeit auch keine Aufnahmen abgespielt werden und dann die Chance gering ist, dass Dateien während der Wiedergabe verschoben werden.

Damit der Crontab auch seine Arbeit verrichtet, benötigt er noch die notwendige Berechtigung, die mit

chmod 744 /etc/cron/crontabs/root

hinzugefügt wird. Weiterhin muss der Crontab einmal mit

/etc/init.d/busybox-cron start

gestartet werden.

Wer nachträglich Änderungen am Inhalt des Crontab vornehmen möchte, kann ihn daraufhin mit “/etc/init.d/busybox-cron restart” (ohne Anführungszeichen) neu starten. Wer ihn gänzlich stoppen möchte, kann dies mit  “/etc/init.d/busybox-cron stop” tun.

Aus meinem täglichen Leben

Lange habe ich an dem Script getüftelt, um die für mich passende Lösung zu finden. Und noch länger habe ich überlegt, ob ich das Script überhaupt zur Verfügung stellen soll. Da aber bereits mehrere Leser nach dieser Funktion gefragt haben, möchte ich meine Erkenntnisse nun doch teilen. Ich denke, dass das Script ohne inhaltliche Änderung von jedem sinnvoll genutzt werden kann und hoffe, dass es zumindest einigen Lesern beim täglichen Betrieb weiterhilft.

Außerdem bieten die Inhalte des Blogposts eine recht gute Grundlage, um die technischen Grundlagen der Enigma2-Receiver und damit Linux kennenzulernen. Hat man die Logik einmal verinnerlicht, kann man recht schnell ganz nette Dinge per Bash-Scipts automatisieren. Sei es der Neustart einer Softcam bei Nichterkennung einer Smartcard oder eine eventgesteuerte Standbyschaltung des Receivers, im Grunde sind der Phantasie keine Grenzen gesetzt.

Vermutlich lässt sich obige Logik auch recht schnell in eine per Plugin-Menü installierbare “App” überführen. Dazu fehlt mir – zumindest aktuell – noch das notwendige Wissen und der Antrieb. Aber vielleicht findet sich ja auch ein fähiger Entwickler, der aus obigem Archivierungsscript ein kleines Programm stricken möchte. Mein Code kann zu diesem Zweck jedenfalls gerne wiederverwendet werden.

46 Kommentare
  1. Hi Jörg,

    super Beitrag wie immmer, aber eine Frage tut sich mir auf? Warum speicherst Du nicht gleich auf einem NAS? Ich mache das so und bin vollendszufrieden. Einzig wenn das NAS “schlafen geht” dann dauert es einige Sekunden bis die Filmliste kommt.

    Liebe Grüße aus Österreich
    Clemes

    1. Hi Clemens,
      mit den Direktaufnahmen aufs NAS habe ich auch schon länger Erfahrungen gesammelt. Es kam dabei immer mal wieder vor, dass das NAS aufgrund eines Updates neugestartet werden musste, gerade ausgelastet oder aus sonst einem Grund im Netzwerk nicht erreichbar war, was gerade aktive Aufnahmen dann zunichte machte. Das passiert natürlich nicht dauernd, aber wenn gerade die Lieblingssendung nicht oder nur teilweise aufgenommen wurde, reicht schon eine einzige fehlende/fehlerhafte Aufnahme, um den Wunsch nach Verbesserung auf den Plan zu rufen. Aus diesem Grund setze ich jetzt auch die SSD dafür ein, da hierbei einfach viel weniger potenzielle Probleme auftreten können. Rückblickend betrachtet, hatte ich damit die letzten Monate auch nie auch nur einen einzigen Aussetzer. Außerdem hat sicherlich auch nicht jeder ein NAS, welches 24/7 in Betrieb ist bzw. das eine Schnellstartfunktion aus dem Standby besitzt. Aber klar, es gibt immer abweichende Settings und natürlich immer verschiedene Möglichkeiten ans Ziel zu gelangen.

      Grüße
      Jörg

  2. Moin Jörg,

    schöne Anleitung, um den chronischen Platzmangel auf Aufnahme-Devices zu begegnen.

    Beim Lesen Deines Beitrags sind mir ein paar Punkte aufgefallen, die man verbessern könnte.

    1) Warum packst Du ein einziges Shell-Script in einen Tarball ? Das macht aus meiner Sicht keinen Sinn, sondern nur Mehrarbeit beim Ver- und Entpacken. Ein Komprimierungs-Effekt entsteht dabei auch nicht, sondern genau das Gegenteil. Das Shell-Script hat ausgepackt 7 Kb, der Tarball aber 10 Kb (gemessen auf meinem Apple-OSX-BS).

    2) Der Befehl zum Lades des Scriptes in den VI lautet: vi /etc/tuxbox/config/archive.sh und _nicht_ vi /etc/tuxbox/config/archive.tar. Ausgepackt war das Script da ja schon.

    Noch eine Frage zum Script. Es gibt in Zeile 81 eine Variable, die ich nicht verstehe: file_without_folder=${file##*\/} . Was wird in dieser Zeile genau gemacht ?

    Das Script selber ist schön übersichtlich geschrieben mit ausreichenden Erklärungen im Code.

    Ein paar Erweiterungen dafür sind mir auch schon eingefallen. Zum Beispiel könnte es sein, daß das Backup-Medium nicht am selben Rechner angeschlossen ist, sondern an einem externen Rechner im selben Netz. Damit dieser nicht ständig eingeschaltet sein muß, könnte man ihn aus dem Script heraus hochfahren (z. B. mit einem WOL-Paket) und nach erledigter Arbeit auch wieder herunterfahren (z. B. per knockd). Beide Anwendungsfälle sind übrigens im neuen Buch von Stefan Heinle (Heimautomation mit KNX, Dali, 1-Wire und Co.) super erklärt.

    Viele Grüße

    Heiner

    1. Hi Heiner,
      danke für dein Feedback und die Anmerkungen.

      Zu 1: Leider kann ich das Script nicht direkt als sh-Datei bereitstellen, da ein Dateiaufruf nicht zu einem Download, sondern zu einem Aufruf der Datei auf dem Server führen würde. Deshalb wollte ich die Datei auch erst per zip-Datei bereistellen, dann gibt es jedoch wieder Probleme beim Entpacken auf dem Enigma-Receiver, da dort entsprechende Pakete fehlen. So bin ich dann auf die tar-Datei ausgewichen. Ob das jetzt ein paar kb mehr braucht, war mir ehrlich gesagt ziemlich egal. Wenn du einen besseren Vorschlag hast, lass es mich wissen.

      Zu 2: Da hast du natürlich Recht. Habe den Blogpost entsprechend berichtigt.

      Zu “file_without_folder”:
      Hier ein Beispiel:
      file=”/media/hdd/movie/20160221 2014 – Das Erste HD – Tatort_ Im gelobten Land.ts”
      file_without_folder=${file##*\/}
      file_without_folder=”20160221 2014 – Das Erste HD – Tatort_ Im gelobten Land.ts”
      Hier wird also alles links bis zum letzten / abgeschnitten, sodass nur noch der Dateiname übrig bleibt. Die Variable ist etwas ungünstig benannt, das gebe ich gerne zu. 😉

      Insgesamt bin ich auch absolut kein Profi, was bash-Programming angeht. Solange es das tut, was ich will, bin ich erstmal mehr als glücklich. Verbesserungsvorschläge sind immer gerne gesehen.

      Grüße
      Jörg

    2. Moin Jörg,

      meine Anmerkung wegen dem Tarball sollte auch keine Kritik darstellen. Ich war nur über Deine Erklärung “tar-komprimiertes Script” gestolpert. Daher mein Hinweis auf den nicht vorhandenen Komprimierungs-Effekt.

  3. Hallo Jörg, in welchem Format liegen denn die Aufnahmen vor ? Können die dann im Netz von jedem Client (PLEX, Kodi, WDTV, FireTV etc.) sofort abgespielt werden ? Eine Umwandlung nach H.264(H.265) MKV würde auch Platz sparen.
    Gruß Axel

    1. Hi Axel,
      die Aufnahmen liegen im ts-Format (MPEG Transport Stream) vor. Es kommt immer ganz auf den Client an, ob er damit nativ zurechtkommt. Im Notfall kann aber auch der Plex Media Server durch das passende Transcoding nachhelfen, das kostet dann aber natürlich CPU-Power. Eine automatische Umwandlung nach H.264 in einen mkv-Container habe ich auch schon realisiert, wobei ich noch etwas an den Einstellungen (Bitrate etc.) spielen muss, bevor das für alle Aufnahmen (verschiedene Formate, Bitraten, Tonspuren, etc.) perfekt ist. Dann kann ich darüber aber auch gerne mal berichten.

      Grüße
      Jörg

    2. Ich persönlich konvertiere auch nach H.264 in mkv Container. Plex, Kodi sollten damit keine Probleme haben. Das größere Problem ist, dass Kodi (alias XBMC) auch auf der Vu+ selbst laufen kann, nur eben nicht gescheit. Vor allem auf der Solo 4k dürftest du da in ein Auflösungs-Problem rennen.

      Ich liebe meine Vu+ Solo 2 auch sehr, aber die vorhandene Software ist teils grausig. Dabei rede ich nicht von den Möglichkeiten, die Linux per se bietet.

  4. Hi Jörg,
    das wäre super, gerade was die automatische Umwandlung betrifft und mit welchem Tool Du das durchführst. Wie immer….äußerst informativ und spannend. So wird das auch mit “Bester Tech Blog 2016(2017 usw…)” dein Heimspiel.
    Gruß Axel

    1. Hi Axel,
      ich nutze das Open-Source-Tool FFmpeg, welches ein grandioses CLI (command line interface) bietet. Entsprechend lässt sich auch alles direkt per bash-Script automatisieren, ähnlich wie bei der Archivierung. Nur kommt es eben je nach Quellformat auf die jeweils passenden Parameter an, die man dem Tool im Rahmen der Umwandlung mitgibt. Ausführliche Infos folgen, das kann aber etwas dauern.

      Grüße
      Jörg

  5. Servus Jörg,
    ich weiß hier scheiden sich die Geister, aber ich nutze nano lieber als vi. Meines Wissens nach ist nano auch bei VTI im Feed verfügbar bzw. sollte sich einfach installieren lassen.

    Viele Grüße
    Marco

  6. Hallo zusammen,

    tolle Idee, hab es gestern gleich nach Anleitung umgesetzt. Eine externe SSD als hdd1 eingehängt und dann erstmal manuell das Skript gestartet.

    2 Fehler sind mir aufgefallen:

    Das Skript archiviert zwar die fälligen Aufnahmen auf die externe SSD, schmeisst aber nach jedem Verschiebevorgang die Meldung “Archvierung gescheitert….” obwohl die Daten korrekt rüberkopiert wurden (hab es per FTP kontrolliert).

    Weiterhin stoppt das Skript nicht sobald mehr als 100 GB auf der internen HDD frei sind sondern macht munter weiter. Ich hab es dann erstmal mit STRG+C abgebrochen….

    Ich habe eine VU Solo 2 Box mit VTI Image 8.23

    Kann ich in irgendeinerweise helfen dass Du die Fehler korrigieren kannst?

    Lieben Dank !
    Markus

    1. Hi Markus,
      vielen Dank für deine Hinweise! Sobald ich mir die Punkte angesehen habe, werde ich mich wieder melden.

      Grüße
      Jörg

    2. So, habe das Script angepasst.

      -Die Fehlermeldung war versehentlich doppelt im Code. Der zweite, falsche Eintrag ist nun entfernt.

      -Die Abfrage, ob genug freier Festplattenplatz auf dem Quellverzeichnis vorhanden ist, war an der falschen Stelle, sodass die Bedingung nur einmal am Anfang geprüft wurde. Jetzt wird die Bedingung nach jedem Archivierungsvorgang einer Aufnahme geprüft, sodass nicht mehr alle Aufnahmen verschoben werden, sondern nur noch so viele, bis wieder genug Speicherplatz zur Verfügung steht.

      Lade dir die Datei einfach neu und überschreibe das bestehende Script. Würde mich über Feedback freuen, ob bei dir nun auch alles funktioniert.

      Grüße
      Jörg

  7. Hallo Jörg !

    Dein Skript funktioniert nun wunderbar, allerdings hattest Du den source_freespace_minimum auf 290 GB hochgeschraubt 🙂 Das hatte mich irritiert. Nachdem ich den Wert wieder auf 100 GB gesetzt habe läuft nun alles ganz prima.

    Vielen Dank nochmals für das Skript !

    Gruss
    Markus

  8. Hallo Jörg

    Wieder mal eine tolle Anleitung. Ich habe eine Frage, ich würde gerne die Filme direkt von der externe Festplatte (/media/hdd/movie/) auf dem NAS (/media/net/AUFNAHMEN/) speichern. Wenn ich das Skript mal händisch am Putty starte, kommt die Meldung, dass nicht genügend Speicherplatz vorhanden ist. Das kann natürlich nicht sein, ich habe noch über 5 TB Frei auf dem NAS. Ist es überhaupt möglich oder muss es auf einer externe Festplatte gespeichert werden?

    Und übrigens, ich würde mich über das Skript zum automisch Umwandeln sehr freuen! 🙂

    Schöne Grüsse

    Kopie der Pfade:

    source_root=”media”
    source_volume=”hdd”
    source_folder=”movie”

    destination_root=”media”
    destination_volume=”net”
    destination_folder=”AUFNAHMEN”

    1. Hi Miguel,
      eigentlich sollte es auch mit dem gemounteten NAS als Ziel funktionieren.
      Was bekommst du als Ausgabe, wenn du auf per ssh den Befehl

      df -k “/media/net/AUFNAHMEN” | awk ‘/[0-9]%/{print $4}’

      ausführst? Hier sollte eigentlich sowas wie 508772804 ausgegeben werden, wenn du bspw. knapp 5 TB frei hast. Evtl. ist dein Pfad ja nicht korrekt?!

      Grüße
      Jörg

  9. Wenn ich den Befehl so eingebe, kommt ganz genau: 61%
    Ist das der belegter Platz auf dem NAS?
    Den Pfad habe ich mit WinSCP ausgelesen, ich denke der stimmt, sehe sicherheitshalber nochmals nach.

    hier noch ein Auszug vom Putty:

    20160223 2027 – Sky Sport HD 3 – Live UEFA CL_ FC Arsenal – FC Barcelona, Achtelfinale Hinspiel Dienstag II.ts kann nicht kopiert werden, da nicht genug Speicherplatz vorhanden

    True
    Nachricht erfolgreich verschickt!

    Grüsse
    Miguel

    1. Ah ok,
      d.h. der Befehl gibt bei dir den verfügbaren NAS-Festplattenplatz nicht in kB an, sondern stattdessen in %. Da müsstest du den Befehl wohl entsprechend anpassen, sodass der richtige Wert gezogen wird. Solange du auf dem Ziellaufwert genug Speicherplatz hast, könntest du die Abfrage aber auch erstmal komplett ausklammern.

    2. Nur zur Info, bei mir geht der Hinweis über das nicht verschieben der Dateien nicht mehr weg vom Bildschirm! 🙂

    3. Hi Miguel,
      die Nachricht wird solange angezeigt, bis die “OK”-Taste auf der Fernbedienung gedrückt wird. Das habe ich absichtlich so gewählt.

      Sofern die Nachricht bpsw. nur 30 Sekunden dargestellt werden soll, ergänze den Befehl entsprechend mit dem “timeout”-Parameter:

      wget -O – -q ‘http://127.0.0.1/web/message?type=2&text=Testnachricht&timeout=30’ >/dev/null 2>&1

      Grüße
      Jörg

  10. Hi Jörg,

    mir hat dein Blog schon viel geholfen. Grade mit FHEM. 🙂 Auf das Script hier bin ich schon vor einiger Zeit gestoßen. Ich hatte leider erst jetzt die Zeit es auf meine Situation anzupassen.

    Das Ziel war einfach: Schiebe alle Dateien auf ein NAS (Time Capsule).

    Da das Script (oder die Dreambox) aber nur einen “Ordner” pro Variable zulässt, musste ich das Script so erweitern/anpassen:

    destination_root=”media”
    destination_volume=”net”
    destination_folder=”tc”
    destination_folder_tc=”Dreambox”

    Außerdem hat die Ausgabe von “df -k” nicht gepasst. Hier musste ich das Script wie folgt ändern:

    destination_freespace=`df -k “/$destination_root/$destination_volume/$destination_folder” | awk ‘/[0-9]%/{print $4}’`

    in

    destination_freespace=`df -k “/$destination_root/$destination_volume/$destination_folder” | awk ‘/[0-9]%/{print $3}’`

    Vielleicht liest das hier mal jemand, der auch von seiner DM800se auf eine Time Capsule schieben möchte. 🙂

  11. Hallo Jörg,

    tolles Skript hast du da erstellt – danke. Ich habe deine Lösung mal mit meiner Lösung kombiniert, evtl. hast du daran Interesse?! Hinzugekommen ist die Prüfung auf Existenz des Mountpoints und die Beachtung von Unterverzeichnissen, sowie das ältere Dateien zuerst archiviert werden.

    Gruß,
    Sven

    1. Hi Sven,
      klar, kannst mir gerne per Mail zuschicken.
      Mein Script hat aber auch bereits eine Prüfung, ob Source und Destination existieren. Ältere Dateien werden dabei auch immer zuerst archiviert… Bleibt noch die Sache mit den Unterverzeichnissen.

      Grüße
      Jörg

  12. Hallo Jörg,

    Danke für das Script.
    Hab Stefans Anpassung für die Speicherplatzberechnung bei mir eingebaut – klappt wunderbar.
    Einzig, wenn der Receiver von jemandem ausgeschaltet wird, während “mv” läuft, fährt er gnadenlos runter.
    Wenn ich über die GUI Filme verschiebe, dann fragt er beim Beenden, ob die Hintergrund-Aufgaben noch beendet werden sollen bzw. ob ich wirklich ausschalten will.
    Irgend eine Idee?

    Danke+Grüße
    JR

  13. Hallo Jörg!

    Danke für den super Artikel.
    Micht interessiert jedoch ganz speziell die Möglichkeit die ts-files nach mkv umzuwandeln und zwar mit konstanter h264 videobitrate von 4096 und ton als 192 kbs mp3. Was brauche ich dazu? Wohin muss ich zB das ffmpeg auf der box kopieren und wie rufe ich es im batch auf?

    LG
    Tom

  14. Hallo, bin kein Linux Experte, aber ich habe das script bis auf den gemounteten Destiantion-Folder (hdd/net/WHS_TV) nicht geändert und bekomme folgende Fehlermeldungen in der Shell:

    root@vuultimo4k:~# /etc/tuxbox/config/archive.sh
    /etc/tuxbox/config/archive.sh: line 2: $’\r’: command not found
    /etc/tuxbox/config/archive.sh: line 3: $’\r’: command not found
    /etc/tuxbox/config/archive.sh: line 4: $’\r’: command not found
    /etc/tuxbox/config/archive.sh: line 6: $’\r’: command not found
    /etc/tuxbox/config/archive.sh: line 10: $’\r’: command not found
    /etc/tuxbox/config/archive.sh: line 14: $’\r’: command not found
    /etc/tuxbox/config/archive.sh: line 16: $’\r’: command not found
    /etc/tuxbox/config/archive.sh: line 18: $’\r’: command not found
    /etc/tuxbox/config/archive.sh: line 20: $’\r’: command not found
    /etc/tuxbox/config/archive.sh: line 22: syntax error in conditional expression
    ‘etc/tuxbox/config/archive.sh: line 22: syntax error near `]]
    /etc/tuxbox/config/archive.sh: line 22: `if [[ ! -e “/$source_root/$source_volum’/$source_folder” ]]

    Kann jemand helfen? Wäre toll.
    Danke, Ludwig.

    1. Hallo Ludwig,

      sieht das Skript bei dir ähnlich aus?

      source_root=”media”
      source_volume=”hdd”
      source_folder=”movie”

      destination_root=”media”
      destination_volume=”net”
      destination_folder=”Filme”

      Poste deine Version.

      Gruß
      Ralf

  15. source_root=”media”
    source_volume=”hdd”
    source_folder=”movie”

    destination_root=”media”
    destination_volume=”net”
    destination_folder=”WHS_TV”

    source_freespace_minimum=”100000000″ #kB -> entspricht 100GB

    extension=”.ts”

  16. Hallo nochmal,

    das Script funktioniert mittlwerweile auch bei mir. Durch das Editieren mit winSCP waren am Ende fast jeder Zeile Steuerzeichen mit gespeichert worden (^M), was zu den Syntax Fehlern führte. Per VI gelöscht und gut ist.

    Scheinbar misst Lnux meine HDD Größe auf meinem Windows Home Server nicht richtig und sagt immer, es sei nicht genug Speicher zu Verfügung. Habe die Zeile dafür zunächst mal auskommentiert. Hat jemand eine Idee?

    Gruss,
    Ludwig

  17. Hallo Ludwig,

    ca 8 Antworten oben hat Stefan eine Lösung geschrieben!

    Bei Mir war die Antwort auf df -k “/media/net/Filme” | awk ‘/[0-9]%/{print $4}’
    eine Prozentangabe!

    Nach ändern auf destination_freespace=df -k “/$destination_root/$destination_volume/$destination_folder” | awk ‘/[0-9]%/{print $3}’
    passt es bei mir!

    Danke Stefan.

    Gruß
    Ralf

  18. Hallo zusammen,

    danke ersteinmal für den Script. Jetzt nutze ich meine NAS Festplatte auch für die Recordings. Ging vorher nicht, da der Receiver nur 100 Mbit Anbindung hat.

    Kodi macht aber ein Problem und mit VLC bekomme ich die Dateien auch nicht mehr auf nach dem Arcivieren.

    Kodi spielt die Dateien ab, aber aus einer 60 Minuten Aufnahme ist laut Anzeige eine mit über 2,5 Stunden geworden.

    Kodi spielt es dann ab ca. 30 – 40 Minuten ab und auch vollständig. vor die Position kann ich auch nicht spulen. Dateigröße ist auch gleich geblieben.

    Kann mir da jemand helfen?

    Danke
    Gruß
    Chris

  19. Hallo Miteinander,
    Respekt für euer Engagement.
    Eigentlich würde ich mich als DAU bezeichnen, was Enigma und Linux angeht, habe mich aber trotzdem schon vor Jahren auf Eierlegende-Wollmilchsau-Receiver eingelassen.
    Seit ca. 4 Jahren habe ich jetzt eine Solo2 und vermisse immer noch Features von meinem alten DVB-T Receiver Siemens M740AV. Dort konnte ich Serien-Timer begrenzen. Je Timereintrag z.B. nur die 10 aktuellsten Aufnahmen behalten und die Alten löschen. Kannst du so etwas in deinem Script einfließen lassen??
    Schöne Grüße
    Chris K

  20. Hallo Jörg,

    Da ich nun ähnlich Hardware zu Hause habe, würde ich dein Skript gern einsetzen. Leider ist der Link mittlerweile tot… würdest du es nochmal bereitstellen?

    Vielen Dank,
    Stephan

    1. Hi Stephan,
      der Link klappt bei mir 1a. Evtl. ein Browserproblem. Datei habe ich dir per Mail geschickt.

      Grüße und viel Erfolg
      Jörg

  21. Ich möchte auf der neuen Box auf SSD lokal aufnehmen und bei Platzmangel auf’s NAS verschieben. Das bash Skript sieht mal nicht schlecht aus, ich frage mich nur WO entschieden wird, daß die ältesten Einträge zuerst kopiert werden.
    Kann ich leider nicht sehen. Außerdem was passiert, wenn auf der Quelle schon Unterverzeichnisse angelegt wurden (z.B. Kinder / Tatort / Comedy…).

    Wenn jemand einen Tip hat, wie ich ein Perl auf die Ultimo 4K bringen kann, wäre ich sehr dankbar. Mit Python anfangen widerstrebt mir noch.

    Gruß Axel

    1. Hi Axel,
      das Script geht die Dateien einfach der Reihe nach durch. Dabei verhält es sich bei mir schlicht so, dass die Dateien von alt nach neu gezogen werden.
      Unterverzeichnisse nutze ich nicht. Da müsstest du das Script entsprechend an einigen Stellen anpassen, um das zu berücksichtigen.

      Grüße und viel Erfolg
      Jörg

    2. Hi,

      ich habe das bash-skript angefangen zu erweitern und hatte eine schöne Lösung mit stat (file), bis ich feststellen musste, daß die VU+ Ultimo 4K genau dieses Linux tool NICHT unterstützt. Nach Package dafür gesucht (coreutils…), gibt aber nix. Dafür dann PERL als package und haufenweise Perl Modules als Packages (opkg list) gefunden.
      Perl installiert und das ganze in PERL gelöst. Mit Unterverzeichnissen, sort by oldest date, log (cron) ….
      Test war zwar ein bißchen blöd, weil der PERL Debugger bei x (Dump auch für Strukturen) abschmiert, p ging aber.
      Ich werde das noch ein bißchen testen und dann auch hier hochladen, das Skript basiert ja auf dem hier veröffentlichten.

      Gruß Axel

  22. Hi,

    ich habe hier ein etwas anderes Szenario, aber eine ähnliche Anforderung 🙂 Wenn das Recording fertig ist (oder die Aufnahme nicht mehr läuft), dann soll es von der an der VUZero angeschlossenen HDD auf ein im Netzwerk verfügbares NAS geschoben werden.

    Der Unterschied – bei mir läuft alles über einen kleine Windows Kiste. Dort habe ich mir ein kleines Powershell Script zusammengeschrieben, welches schaut, ob ein neues Recording auf der Disk der VUZero liegt, prüft ob sich innerhalb von 10 Sekunden die Dateigröße ändert – und wenn nicht, das Recording dann auf das NAS schiebt.

    Wiegesagt – ist rein nur eine Alternative 🙂 (und für meine Zwecke ausreichend, da ich nicht so der bash scripter bin :))

    somit – falls es jemanden da draußen interessiert – hier das Script 🙂
    LG
    alex

    ########################################
    $targetpath = “\\192.168.200.4\dl_VuRecordings\1_NEW_RECORDINGS”
    $vuzeropath = “\\192.168.200.93\Harddisk\movie”

    if(!(Test-Path $targetpath)){
    write-host “TargetPath [$targetpath] not reachable… EXITING” -ForegroundColor Red
    exit 1
    }else{
    write-host “Targetpath [$targetpath] OK”
    }

    try{
    $tsFiles = Get-ChildItem “$vuzeropath” -ErrorAction Stop | where {$_.name -like “*.ts”}
    }catch{
    write-host “VUZero Disk path not readable [$($_.exception.message)]” -ForegroundColor Red
    exit 1
    }

    write-host “Recordings found: $($tsFiles.count)”
    if ($tsFiles.count -eq 0){
    write-host “No recordings found!!” -ForegroundColor Yellow
    exit 1
    }

    foreach ($tsFile in $tsFiles){
    write-host “processing $($tsfile.name)”
    $filesize1 = $null
    $filesize2 = $null

    $filesize1 = $tsFile.Length
    write-host “waiting 10 seconds…”
    timeout 10
    $filesize2 = (Get-Item $tsfile.FullName).Length

    if($filesize1 -ne $filesize2){
    Write-Host “Recording in Progress…SKIPPING [$($tsfile.Name)]” -ForegroundColor Yellow
    continue
    }else{
    Write-Host “FileSize is Equal – preparing Move”
    }

    if(!(Test-Path $targetpath)){
    Write-Host “Targetpath [$targetpath] not reachable” -ForegroundColor Red
    continue
    }else{
    Write-host “Targetpath [$targetpath} OK”
    }

    $searchsting = $tsFile.Name.Substring(0,($tsFile.name).length-3)
    Write-Host “Filestring: $searchsting” -ForegroundColor Yellow

    $tomoveFiles = Get-ChildItem “$vuzeropath” -ErrorAction Stop | where {$_.name -like “$searchsting*”}

    try{
    write-host “To move Files:”
    $tomoveFiles
    write-host “Moving Files…”
    $tomoveFiles | Move-Item -Destination $targetpath -ErrorAction stop
    }catch{
    write-host “Move Failed: [$($_.exception.message)]” -ForegroundColor Red
    }

    }

    write-host “All Done!” -ForegroundColor Green
    ########################################

  23. Hallo,
    der Post ist zwar schon etwas älter, aber ich bin trotzdem drüber gestolpert. Ich habe es ganz anders gemacht. Ich habe mein NAS als Samba Device in der Vu eingebunden und speichere Aufnahmen direkt auf dem NAS. So stehen mir aktuell über 15 TB freier Speicher zur Verfügung :).
    Spart auch das Autobackup.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte dir auch gefallen